【问题标题】:Multipart, how to send file correct多部分,如何正确发送文件
【发布时间】:2019-07-31 18:03:45
【问题描述】:

我正在尝试通过 Flutter 发送 Multipart 表单数据,但响应 api 无法获取图像文件。我创建了一个后端只是为了调试我的调用,我得到了这个:

我的代码:

Map<String, String> fields = {
      "label":'-Ll7XfpsPLd_w5kz-D0m' 
    };
MultipartRequest request = MultipartRequest(
      'POST',
      Uri.parse(url),
    );
    request.fields.addAll(fields);
    request.files.add(
      MultipartFile.fromBytes(
        'image',
        imagem.readAsBytesSync(),
        contentType: MediaType('image', 'jpeg'),
      )
    );
    return request.send();

服务器回答:

received fields:

 { label: [ '-Ll7XfpsPLd_w5kz-D0m' ],
  image:
   [ '\M-o\M ... A LOT OF DATA]}

然后做了一个HTML页面来测试一下:

<form method="POST" enctype="multipart/form-data" action="http://172.20.10.2:5002/upload" >
    <input type="text" name="zava" value="Zava" /> <br />
    <input type="file" name="image" /> <br />
    <input type="submit" /> <br />
</form>

并收到服务器回复:

received fields:

 { zava: [ 'Zava' ] }

received files:

 { image:
   [ { fieldName: 'image',
       originalFilename: 'Grifo.png',
       path: '/tmp/0wvX_w8W5Mw_7flqIdK0b1xX.png',
       headers: [Object],
       size: 114862 } ] }

我的代码有什么问题?为什么 de Multipart 不将文件作为文件发送?

【问题讨论】:

    标签: http post flutter multipartform-data


    【解决方案1】:

    我发现,如果您传递MultipartFile 的可选参数filename,则请求可以正常工作。

    只需要这样做:

          MultipartFile.fromBytes(
            'image',
            imagem.readAsBytesSync(),
            contentType: MediaType('image', 'jpeg'),
            filename: 'dummy.jpg'
          )
    

    我打开了关于没有文件名的请求的颤振错误(如果必须修复或更改文档)...

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 2017-11-24
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      相关资源
      最近更新 更多