尝试在Asp.Net mvc4中使用http路径保存图像

时间:2014-08-14 14:43:43

标签: c# asp.net-mvc asp.net-mvc-4

是否可以使用http路径保存图像? 在我的情况下,所有图像都存储在与我的网站不同的位置。

我的代码抛出一个异常,表示不支持" URI格式"当我在代码下面运行时

string fileLocation = "http://img.servername.com";

Bitmap bmp = GetImage();

bmp.Save(Path.Combine(fileLocation,"a.jpg"));

2 个答案:

答案 0 :(得分:0)

您需要保存到本地目录,而不是文件。

string fileLocation = @"c:\mydirectory";

Bitmap bmp = GetImage();

bmp.Save(Path.Combine(fileLocation,"a.jpg"));

您还需要确保您的Web应用程序具有该位置的写入权限。请注意,上传文件并将其保存到服务器可能会带来严重的安全问题和漏洞,超出了您的问题范围。

答案 1 :(得分:0)

这不是那么简单。

我认为你有两种可能性。

您可以通过ftphttp发送。

如果您想通过http发送,该服务器必须实施一种方法,该方法接受带有POST参数的byte array请求。

从您的网络应用程序中,您必须将图片转换为byte array并使用它来对该特定操作发出POST请求。

通过ftp您需要凭据,这是msdn docs的一个小演示:

// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");
request.Method = WebRequestMethods.Ftp.UploadFile;

// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader("testfile.txt");
byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

response.Close();

http://msdn.microsoft.com/en-us/library/ms229715(v=vs.110).aspx