Solved

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

Posted on 2004-09-05
7
1,516 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
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 
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

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Autosum input type=text when checkbox is true 28 71
API not working 33 47
format nvarchar field as mm/dd/yyyy 4 55
Pass through dll 2 37
Hello, all! I just recently started using Microsoft's IIS 7.5 within Windows 7, as I just downloaded and installed the 90 day trial of Windows 7. (Got to love Microsoft for allowing 90 days) The main reason for downloading and testing Windows 7 is t…
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

705 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

21 Experts available now in Live!

Get 1:1 Help Now