相关疑难解决方法(0)

application/x-www-form-urlencoded或multipart/form-data?

在HTTP中有两种POST数据的方式:application/x-www-form-urlencodedmultipart/form-data.据我所知,大多数浏览器只能在使用时上传文件multipart/form-data.在API上下文中使用其中一种编码类型时是否有任何其他指导(不涉及浏览器)?这可能基于:

  • 数据大小
  • 存在非ASCII字符
  • 存在于(未编码的)二进制数据上
  • 需要传输额外的数据(如文件名)

到目前为止,我基本上没有在网上找到有关使用不同内容类型的正式指导.

post http http-headers

1268
推荐指数
4
解决办法
116万
查看次数

使用curl上传带有文件的POST数据

我想使用cURL不仅可以在HTTP POST中发送数据参数,还可以上传具有特定表单名称的文件.我应该怎么做呢?

HTTP Post参数:

userid = 12345 filecomment =这是一个图像文件

HTTP文件上传:文件位置= /home/user1/Desktop/test.jpg file = image的表单名称(对应于PHP端的$ _​​FILES ['image'])

我认为cURL命令的一部分如下:

curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php
Run Code Online (Sandbox Code Playgroud)

我得到的问题如下:

Notice: Undefined index: image in /var/www/uploader.php
Run Code Online (Sandbox Code Playgroud)

问题是我使用$ _FILES ['image']来获取PHP脚本中的文件.

如何相应调整cURL命令?

shell post curl file-upload file

387
推荐指数
7
解决办法
54万
查看次数

使用curl命令行将多个文件上传到php服务器

我需要使用curl命令行实用程序将多个文件上传到服务器.对于单个文件我使用时没有问题:

curl -F "image=@file1.gif"   http://localhost:8888/web/Upload.php
Run Code Online (Sandbox Code Playgroud)

我怎么会做这样一个以上的文件,使PHP变量$ _FILES ["形象"] ["错误"]会返回一个数组?

我试过了

curl -F "image=@file1.gif" -F "image=@file2.gif"  http://localhost:8888/web/Upload.php
curl -F "image=@file1.gif,image=@file2.gif"  http://localhost:8888/web/Upload.php
Run Code Online (Sandbox Code Playgroud)

但这些都是在黑暗中刺伤.

php curl

21
推荐指数
1
解决办法
2万
查看次数

使用curl来发布多部分/表单数据、文件和大量键值对

作为模拟应用程序前端在后端工作时将执行的操作的一部分,我一直在运行各种curl 命令。很容易只获取要发送的文件Content-Type:application/octet-stream或仅发送 jsonContent-Type:application/json

我发送了 json 内联:

curl -X POST -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://127.0.0.1:8088
Run Code Online (Sandbox Code Playgroud)

从文件中提取 json 并按如下方式发送:

curl -X POST -H "Content-Type: application/json" -H 'Accept: application/json' --data-binary @test.json http://127.0.0.1:8088
Run Code Online (Sandbox Code Playgroud)

(任何想法“接受”的作用是什么?没有它就不起作用..,解决方案来自这里

仅发送一个文件本身,如下所示:

curl --request POST -H "Content-Type:application/octet-stream"  --data-binary "@photo.jpg"  http://127.0.0.1:8088
Run Code Online (Sandbox Code Playgroud)

带有 json 内联和图片的多部分非常好,如下所示:

curl --verbose --request POST --header "Content-Type:multipart/form-data" --form key1=value1  --form upload=@photo.jpg   http://127.0.0.1:8088
Run Code Online (Sandbox Code Playgroud)

(解决方案来自这里

当我尝试从文件和照片中提取键值对,或者将 json 粘贴到同时上传文件的curl 命令中时,问题就开始了。可以curl说服发送"Content-Type:multipart/form-data"来自文件的键值对来自文件的文件附件吗?

约翰.json

{
  "surname" : "Doe",
  "name" : "John", …
Run Code Online (Sandbox Code Playgroud)

forms post json curl

3
推荐指数
1
解决办法
2万
查看次数

使用curl为文件上传的multipart/form-data

我有一个服务器API,我根据Fiddler用来做文件的HTTP帖子的格式开发,这是一个multipart/form-data帖子.我正在尝试让curl做类似的事情(所以我可以停止使用Fiddler进行测试,而是让一个单独的程序调用以编程方式进行卷曲).

以下是它在Fiddler中的设置方式,这是我需要复制的内容.正在上传的文件是myfile.html:

---------------------------acebdf13572468
Content-Disposition: form-data; name="fieldNameHere"; filename="myfile.html"
Content-Type: text/html

<@INCLUDE *C:\myfiles\myfile.html*@>
---------------------------acebdf13572468--
Run Code Online (Sandbox Code Playgroud)

所以我需要的是curl生成类似的东西:特别是name = part,后面跟着这部分底部的文件内容.我试过这个:

curl -F "fieldNameHere=myfile.html" http://myapi.com/
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它似乎完全忽略了我的文件.如果我添加-v,这是详细输出:

POST / HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: perl-h4.factset.io
Accept: */*
Content-Length: 166
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------981301fdaeb3
Run Code Online (Sandbox Code Playgroud)

根本没有文件内容(它是一个大的HTML文件).所以我认为这里可能存在一些基本的东西.任何指针都会非常受欢迎.

另外,我已经检查了其他类似StackOverflow的问题:使用curl POST多部分/表单数据的正确方法是什么?

但他们基本上都是在做我喜欢做的事情.所以问题可能不是我的语法,而是其他一些原因,它不想读取文件.

curl multipart

2
推荐指数
2
解决办法
5936
查看次数

标签 统计

curl ×4

post ×3

file ×1

file-upload ×1

forms ×1

http ×1

http-headers ×1

json ×1

multipart ×1

php ×1

shell ×1