• HTTP Post multipart/form-data支持


    最近需要向平台发送录像文件,但是Skynet没有multipart/form-data的Post请求支持,写篇blog记录一下

    skynet有自带简单的httpc,里面有post方法。但是这个post方法已经写死了Content-type,只能是url-encoded类型的,所以只适合body是几个key-value对的情况。

    所以只能有最原始的httpc.request方法了。请求头比较灵活,可以自己设置为Content-type: multipart/form-data; 除了这个,还需要设置一个boundary,用来分割需要同时上传多个field的情况。每个field长这样:

    --------------------------d74496d66958873e
    Content-Disposition: form-data; name="secret"; filename="file.txt"
    Content-Type: text/plain
    
    contents of the file
    --------------------------d74496d66958873e--

    其中--------------------------d74496d66958873e 这个就是boundary,最后会加上--表示结束。

    特别鸣谢cURL的文档:https://ec.haxx.se/http-multipart.html,里面写的非常详细。还提到了一个Expect参数,让服务器可以用100 continue来让客户端继续传,如果因为身份认证等问题出错,可以直接返回错误码,中断客户端上传,避免上传了一大堆然后发现没权限的浪费。

    对于多个field的编码,可以用这个库:https://github.com/Kong/lua-multipart,会帮你将body编码好

  • 相关阅读:
    maven+spark2.0.0最大连通分量
    Eclipse+maven+scala2.11.8+spark2.0.0的环境部署
    杀死mapreduce
    filter-自己的理解
    JS变量声明提升
    js==运算符强制转换规则
    html 文字间距
    如你所见,我开始用微博
    vue数据模拟
    vue项目目录介绍
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/skynet_http_multipart.html
Copyright © 2020-2023  润新知