我正在构建一个.NET应用程序,最近我添加了一种在服务器上上传图片的方法(使用WebService)。我的应用程序将图片检索为FileStreams,将它们传递给WebService的方法,然后在本地复制(在服务器上)图片:
public void SendPhotos(Stream stream)
{
string folder = ConfigurationManager.AppSettings["defaultfolderpath"];
if (!Directory.Exists(folder + "Trucs et Astuces"))
Directory.CreateDirectory(folder + "Trucs et Astuces");
if (!Directory.Exists(folder + "Trucs et Astuces\\" + refHD))
Directory.CreateDirectory(folder + "Trucs et Astuces\\" + refHD);
string filename = folder + @"Trucs et Astuces\" + refHD + Guid.NewGuid();
FileStream f = File.Create(filename);
stream.CopyTo(f);
f.Close();
stream.Close();
}
我想以相反的方式做同样的事情,从服务器检索图片并在我的计算机上本地复制它们。你有任何想法吗?
由于
答案 0 :(得分:0)
如果您可以控制Web服务,那么您可以使用任何标识字符串(如时间戳或任何其他您熟悉的字符串)为您的上传文件名添加前缀/后缀,并相应地检索文件并将其作为下载文件发送。
答案 1 :(得分:0)
以下函数将使用字符串作为路径读取图像,并返回一个流,当从API返回时,该流可以转换为StreamContent。
private StreamContent ReadImageAsStream(string imagePath)
{
// Code here to get image based on above parameter
//TODO remove url
if (string.IsNullOrEmpty(imagePath))
{
return Image.FromFile(@"\\Content\Images\no_image_available.png").ToStream(ImageFormat.Jpeg);
}
// Read and return image as stream
return Image.FromFile(imagePath).ToStream(ImageFormat.Jpeg);
}
和控制器,如果使用Web API
public HttpResponseMessage GetImageByObjectId(string imagePath)
{
return Request.CreateResponse(HttpStatusCode.OK, ReadImageAsStream(imagePath));
}
当然,除了将路径作为参数提供外,最好以其他方式识别图像。