greenguy
asked on
Accessing File Properties (such as Title, Subject,Author,Keywords etc...) from .NET
In Windows, when I look at the properties for a file, I see a summary tab that has the Title, Subject, Author, Keywords and Comments.
Can I access these through .NET (I write in C#)?
I would like to develop an image applicaton that reads the Comments from the Summary tab of the file properties to use as a caption for the image - ideally I would love to be able to read and write these properties.
I can't find anything in System.IO, but I am looking for something like:
//get the comments from the summary
string stCaption = File.Properties.Comments;
The application will run on a windows server.
Any ideas?
Thanks in advance
Can I access these through .NET (I write in C#)?
I would like to develop an image applicaton that reads the Comments from the Summary tab of the file properties to use as a caption for the image - ideally I would love to be able to read and write these properties.
I can't find anything in System.IO, but I am looking for something like:
//get the comments from the summary
string stCaption = File.Properties.Comments;
The application will run on a windows server.
Any ideas?
Thanks in advance
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Fritz - I appreciate your detailed response; however, I would like to be able to access the Comments and Author properties specifically, and they are not offered in the standard System.IO namespace (that I am aware of).
Slim - That was exactly what I was looking for, almost. To use that, I would need to register the com object - which works great on my machine, but my web host doesn't offer me that option. They already compiled the most useful bit of code, so I can't see how they did it or make much use of it.
That may be as close as I get.
Other thoughts?
Slim - That was exactly what I was looking for, almost. To use that, I would need to register the com object - which works great on my machine, but my web host doesn't offer me that option. They already compiled the most useful bit of code, so I can't see how they did it or make much use of it.
That may be as close as I get.
Other thoughts?
>>.and they are not offered in the standard System.IO namespace (that I am aware of).<<
I just did a check and you are, unfortunately, correct about that.
FtB
I just did a check and you are, unfortunately, correct about that.
FtB
ASKER
I found an acceptable answer for now - I was poking around the System.Drawing namespace, and found the PropertyItems collection, which has the comments for .jpg files.
The following code will list all of the various property items for a particular file - including the advanced properties:
System.Drawing.Image img = System.Drawing.Image.FromF ile(Server .MapPath(" test.jpg") );
PropertyItem[] items = img.PropertyItems;
foreach(PropertyItem p in items)
{
Response.Write("<ul>");
Response.Write("<li>ID: 0x"+p.Id.ToString("x")+"<b r>");
Response.Write("<li>Length : "+p.Len.ToString()+"<br>") ;
Response.Write("<li>Type: "+p.Type.ToString()+"<br>" );
Response.Write("<li>Value: "+System.Text.Encoding.ASC II.GetStri ng(p.Value )+"<br>");
Response.Write("</ul>");
}
Thanks for the help though.
Any thoughts about what I should do for points?
Slim - your answer would have worked if I could register the com object on my server.
Thoughts?
The following code will list all of the various property items for a particular file - including the advanced properties:
System.Drawing.Image img = System.Drawing.Image.FromF
PropertyItem[] items = img.PropertyItems;
foreach(PropertyItem p in items)
{
Response.Write("<ul>");
Response.Write("<li>ID: 0x"+p.Id.ToString("x")+"<b
Response.Write("<li>Length
Response.Write("<li>Type: "+p.Type.ToString()+"<br>"
Response.Write("<li>Value:
Response.Write("</ul>");
}
Thanks for the help though.
Any thoughts about what I should do for points?
Slim - your answer would have worked if I could register the com object on my server.
Thoughts?
Here are some guidelines:
https://www.experts-exchange.com/Web/Web_Languages/ASP/help.jsp#hs5
Good luck with your project,
FtB
https://www.experts-exchange.com/Web/Web_Languages/ASP/help.jsp#hs5
Good luck with your project,
FtB
A reference is available at http://www.codeproject.com/KB/graphics/exifextractor.aspx with a title of EXIFextractor library to extract EXIF information.
http://builder.com.com/5100-6373_14-5285107.html
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script Language="C#" runat="server">
void Page_Load(Object sender, EventArgs e) {
// path to directory
string strPath = "E:/users/john/personal/fi
// create an instance of the DirectoryInfo object
DirectoryInfo objTestDirectory = new DirectoryInfo(strPath);
if(objTestDirectory.Exists
output.Text = "Yes, the directory <b>" + strPath + "</b> exists.";
} else {
output.Text = "No, the directory <b>" + strPath + "</b> does not exist.";
}
}
</script>
<html>
<head></head>
<body>
<asp:label id="output" runat="server" style="font: 14px, Arial" /> </body> </html>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script Language="C#" runat="server">
void Page_Load(Object sender, EventArgs e) {
// path to the file
string strFilePath = "E:/users/john/personal/fi
// create an instance of the FileInfo object
FileInfo objTestFile = new FileInfo(strFilePath);
if(objTestFile.Exists) {
output.Text = "The file <b>" + strFilePath + "</b> was found. Here is more information: <br />";
output.Text += "Name: " + objTestFile.Name + "<br />";
output.Text += "Location: " + objTestFile.FullName + "<br />";
output.Text += "Created on: " + objTestFile.CreationTime + "<br />";
output.Text += "Last modified on: " + objTestFile.LastWriteTime + "<br />";
output.Text += "File size (in bytes): " + objTestFile.Length.ToStrin
"<br />";
output.Text += "Extension: " + objTestFile.Extension;
} else {
output.Text = "Sorry, the file <b>" + strFilePath + "</b> was not found.";
}
}
</script>
<html>
<head></head>
<body>
<asp:label id="output" runat="server" style="font: 14px, Arial"/> </body> </html>
Fritz the Blank