Forum Moderators: open

Message Too Old, No Replies

System.Drawing.Image.FromFile and network paths

trying to use a file located at \\SERVER\DRIVE\

         

salzano

8:29 pm on Jul 20, 2009 (gmt 0)

10+ Year Member



I am trying to send a file name that sits on a network path to this function:

imageURL = "\\SNAKE\Cobra\InetPub\Sites\" & websiteFolder & "\graphics\" & imageURL
dim originalImage As System.Drawing.Image = System.Drawing.Image.FromFile( imageURL )

Where SNAKE is the server name on the same domain and Cobra is the name of the drive (using the drive letter instead doesn't work).

Is this possible? The MSDN pages don't have any good examples, as usual. I tried passing it through Server.MapPath with no luck.

Ocean10000

3:08 am on Jul 21, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



I am going to assume the file is being accessed in an Asp.Net web application, and that the file resides in the web application child folders. I am going to paste in some sample C# code to help debug common issues. I am adding trace events that can be read using trace.axd in asp.net.



string path = System.Web.HttpContext.Current.Request.MapPath("/graphics/");
if (System.IO.Directory.Exists(path) == false)
{
//Folder path doesn't exist
System.Web.HttpContext.Current.Trace.Warn("path",path);
System.Web.HttpContext.Current.Trace.Warn("Folder path doesn't exist");
return;
}

path = System.Web.HttpContext.Current.Request.MapPath("/graphics/ + imageURL);
if (System.IO.File.Exists(path) == false)
{
//File does not exist
System.Web.HttpContext.Current.Trace.Warn("path",path);
System.Web.HttpContext.Current.Trace.Warn("File does not exist");
return;
}

System.Drawing.Image originalImage = System.Drawing.Image.FromFile( path );
.
.
.



Just a word of warning some methods of System.Drawing.Image uses unmanaged GDI+ handles, and on a busy site can easily exceed the pool of these handles. Depending how often they are used and disposed of.

marcel

6:53 am on Jul 21, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Your code should work, I just tested the following in my work network, and it loaded the image fine.


Dim imageURL As String = "\\SERVERNAME\Share\Test\Untitled.jpg"
Dim originalImage As System.Drawing.Image = System.Drawing.Image.FromFile(imageURL)

- What does your imageURL string contain at the point of loading the Image. (the reason being you have called it 'imageURL', is it a url?)

- Does your website (the Network Service user) have the correct permissions for this folder?

And, as Ocean10000 says, I would do the processing within a Try...Finally block (disposing of the Image in 'Finally' to free up resources)