• 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编码好

  • 相关阅读:
    元素模式
    完美C++(第5版)(双色)
    ASP.NET Web API 2框架揭秘
    跨终端 Web
    WebKit技术内幕
    云计算时代——本质、技术、创新、战略
    互联网创业密码
    Netty权威指南
    Robot Framework 学习笔记(二)-------第一个脚本
    Robot Framework学习笔记(一)------环境搭建
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/skynet_http_multipart.html
Copyright © 2020-2023  润新知