Solved

Accessing File Properties (such as Title, Subject,Author,Keywords etc...) from .NET

Posted on 2004-09-05
7
1,517 Views
Last Modified: 2009-07-21
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
0
Comment
Question by:greenguy
7 Comments
 
LVL 11

Accepted Solution

by:
Slimshaneey earned 500 total points
ID: 11987916
Have a look at the project called AdvancedFileProperties. Might be exactly what you are looking for.
http://www.coad.net/Products/
0
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 11989379
This link here should help:

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/files/";
      
      // 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/files/Test_Document.doc";

      // 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.ToString() +
"<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
0
 
LVL 4

Author Comment

by:greenguy
ID: 11992697
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?
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 11992727
>>.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

0
 
LVL 4

Author Comment

by:greenguy
ID: 11993180
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.FromFile(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")+"<br>");
      Response.Write("<li>Length: "+p.Len.ToString()+"<br>");
      Response.Write("<li>Type: "+p.Type.ToString()+"<br>");
      Response.Write("<li>Value: "+System.Text.Encoding.ASCII.GetString(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?
0
 
LVL 46

Expert Comment

by:fritz_the_blank
ID: 12001906
Here are some guidelines:

http://www.experts-exchange.com/Web/Web_Languages/ASP/help.jsp#hs5

Good luck with your project,

FtB
0
 

Expert Comment

by:mckenzieGregory
ID: 23114997
A reference is available at http://www.codeproject.com/KB/graphics/exifextractor.aspx with a title of EXIFextractor library to extract EXIF information.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Have you ever needed to get an ASP script to wait for a while? I have, just to let something else happen. Or in my case, to allow other stuff to happen while I was murdering my MySQL database with an update. The Original Issue This was written…
I was asked about the differences between classic ASP and ASP.NET, so let me put them down here, for reference: Let's make the introductions... Classic ASP was launched by Microsoft in 1998 and dynamically generate web pages upon user interact…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…
Concerto provides fully managed cloud services and the expertise to provide an easy and reliable route to the cloud. Our best-in-class solutions help you address the toughest IT challenges, find new efficiencies and deliver the best application expe…

914 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now