V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LxnChan
V2EX  ›  程序员

求助如何通过没有文档的接口上传文件

  •  
  •   LxnChan ·
    lxnchan · 2021-12-13 20:55:50 +08:00 · 1541 次点击
    这是一个创建于 836 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一个 API ,没有文档没有参数说明。

    现在需要一个 shell 脚本,通过这个 API 上传一份文件。

    我感觉应该是一种通用的模板,所以想问一下大家,如何按照上面的格式通过curl上传文件?

    Ps:请勿发表无用观点诸如:换 API 、没文档谁知道等等。

    第 1 条附言  ·  2021-12-13 23:49:08 +08:00

    我想问一下boundary参数会自动生成吗,另外还有就是如果直接-F "[email protected]"的话--data-binary参数会不会直接等于文件的二进制内容呀

    13 条回复    2021-12-14 08:38:29 +08:00
    israinbow
        1
    israinbow  
       2021-12-13 22:44:50 +08:00
    个人愚见:
    有授权参数, 应该是用了 jwt 标准, 文件还带有参数, 可能是用 json 发送的, 数据内容太复杂了, 直接用 curl 传不了, 得写个程序模拟后端上传的方法才行.
    yuzo555
        2
    yuzo555  
       2021-12-13 22:52:13 +08:00
    标准的 HTML Form 上传,你构建一个网页表单都可以了。

    参考: https://developer.mozilla.org/en-US/docs/Learn/Forms/Sending_forms_through_JavaScript
    xgfan
        3
    xgfan  
       2021-12-13 22:56:16 +08:00   ❤️ 3
    @israinbow 牛逼,一个也没对。
    izoabr
        4
    izoabr  
       2021-12-13 23:08:01 +08:00
    看着挺正常的 Form Data 呀,正常 Form 上传就这样的数据呀,看 Authorization 好像也没太强制有效的东西,直接传就好了,但你得知道 POST 地址哦。
    Dreax
        5
    Dreax  
       2021-12-13 23:08:13 +08:00
    LxnChan
        6
    LxnChan  
    OP
       2021-12-13 23:09:59 +08:00
    @izoabr 但是他这个图片前面有数据,后面也有结尾,还有那个 boundary 参数
    oott123
        7
    oott123  
       2021-12-13 23:15:53 +08:00 via Android
    2 4 5 楼都正确,楼主补补 HTTP 课
    LxnChan
        8
    LxnChan  
    OP
       2021-12-13 23:49:31 +08:00
    @Dreax 我想问一下 boundary 参数会自动生成吗,另外还有就是如果直接-F "[email protected]"的话--data-binary 参数会不会直接等于文件的二进制内容呀
    woodnaonly
        9
    woodnaonly  
       2021-12-13 23:58:11 +08:00
    这文档比接口都方便啊,标准的 http 协议
    head 有 authorization 头
    content-type 是 form-data
    curl 5 楼正解了
    有些文档用啥传输都写不出清楚
    是 form-data 还是 base64 一无所知
    后端只知道他自己写的代码。
    eason1874
        10
    eason1874  
       2021-12-14 01:18:49 +08:00
    @LxnChan #8 boundary 是 multipart/form-data 特性,用于传输多个文件时区分不同文件主体

    只要是完备的 HTTP 客户端(比如 cURL ),开启 Content-Type=multipart/form-data 就会自动添加 boundary 和 --data-binary ,这个你不用管

    按 #5 说的试一试就懂了
    jalena
        11
    jalena  
       2021-12-14 02:15:48 +08:00
    Vscode + REST Client(插件)

    完全满足你的要求!
    jalena
        12
    jalena  
       2021-12-14 02:19:37 +08:00
    TENANT-ID 应该是租户

    首先这是一个 post 接口,参数应该就是一个 MultipartFile

    你上面的这些完全就是 rest Client 的调用接口方式。
    LxnChan
        13
    LxnChan  
    OP
       2021-12-14 08:38:29 +08:00
    @eason1874 okk 我去试一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5291 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:12 · PVG 17:12 · LAX 02:12 · JFK 05:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.