从服务器获取目录,子目录和文件

时间:2017-06-27 13:57:31

标签: c# visual-studio web-services stream

我正在构建一个.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();
    }

我想以相反的方式做同样的事情,从服务器检索图片并在我的计算机上本地复制它们。你有任何想法吗?

由于

2 个答案:

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

当然,除了将路径作为参数提供外,最好以其他方式识别图像。