【问题标题】:Send file to service using Microsoft.Net.Http使用 Microsoft.Net.Http 将文件发送到服务
【发布时间】:2013-10-09 01:57:55
【问题描述】:

我有一个方法:

    private bool UploadFile(Stream fileStream, string fileName)
    {
            HttpContent fileStreamContent = new StreamContent(fileStream);
            using (var client = new HttpClient())
            {
                using (var formData = new MultipartFormDataContent())
                {
                    formData.Add(fileStreamContent, fileName, fileName);

                    var response = client.PostAsync("url", formData).Result;

                    return response.StatusCode == HttpStatusCode.OK;
                }
            }
        }
    }

这是将文件发送到 WCF 服务,但是查看帖子的 Wireshark 日志,没有附加 fileStream,只是附加了文件名。我需要做其他事情吗?

【问题讨论】:

    标签: c# file-upload upload multipartform-data httpcontent


    【解决方案1】:

    原来 fileStream 没有进入该方法。使用context.Request.Files[0].InputStream 似乎是罪魁祸首。使用 .SaveAs 然后将其作为 byteArray 读取并将其附加到 MultiPartFormDataContent 有效。

    【讨论】:

      【解决方案2】:

      使用ByteArrayContent 而不是流内容。

       var fileContent = new ByteArrayContent(File.ReadAllBytes(fileName));
      

      然后指定您的内容处置标题:

      fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
      {
          FileName = fileName
      };
      
      formData.Add(fileContent);
      

      【讨论】:

      • 我确实最终这样做了,但是因为我最终将文件保存到磁盘,然后照此读取。您只能追加当前保存到磁盘的文件吗?我试图避免这样做,这就是我附加流的原因。
      • 所以结果方法参数中不需要Stream fileStream,对吧?
      • @rob-g 我能找到一个完整的工作示例吗?
      猜你喜欢
      • 2023-03-03
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 2020-02-22
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多