Solved

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

Posted on 2004-09-05
7
1,520 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:   The Exchange of informatio…
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…

749 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