2017-06-27 148 views
0

我正在构建一个.NET应用程序,并且最近添加了一种在服务器上(使用WebService)上传图片的方法。我的应用程序获取的图片作为文件流,将它们传递到一个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

那么路径是在'文件名'这样读? (不相关但Path.Combine()是你的路径建立的朋友) –

回答

0

如果你控制了Web服务,那么你可以前缀/后缀上传的文件名与任何标识字符串(如时间戳或任何其它你熟悉并且用),并相应地检索文件,并将它们发送作为下载文件。

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)); 
    } 

当然你比作为参数提供的路径更好识别一些其他的方式的图像,其他。

相关问题