相关疑难解决方法(0)

用于发送multipart/form-data请求的工具

我目前正在使用Chrome Addon Postman-REST Client轻松创建POST/GET请求,这是一个非常好的工具.

现在我想调试一个上传脚本,我正在寻找一个工具来将请求编码为"multipart/form-data",这样我也可以发送一个文件.

谢谢你的帮助

multipartform-data

550
推荐指数
2
解决办法
45万
查看次数

如何在python中发送带有请求的"multipart/form-data"?

如何multipart/form-data在python中发送请求?如何发送文件,我理解,但如何通过这种方法发送表单数据无法理解.

python multipartform-data python-2.7 python-requests

178
推荐指数
7
解决办法
21万
查看次数

JavaScript:上传文件

假设我在页面上有这个元素:

<input id="image-file" type="file" />
Run Code Online (Sandbox Code Playgroud)

这将创建一个按钮,允许网页用户通过浏览器中的"文件打开..."对话框选择文件.

假设用户单击所述按钮,在对话框中选择一个文件,然后单击"确定"按钮关闭对话框.

选定的文件名现在存储在:

document.getElementById("image-file").value
Run Code Online (Sandbox Code Playgroud)

现在,假设服务器在URL"/ upload/image"处理多部分POST.

如何将文件发送到"/ upload/image"?

另外,如何收听文件上传完成的通知?

javascript file-upload

163
推荐指数
4
解决办法
61万
查看次数

AngularJS:如何使用multipart表单实现简单的文件上传?

我想从AngularJS到node.js服务器做一个简单的多部分表单帖子,表单应该在一个部分包含一个JSON对象,在另一个部分包含一个图像,(我目前只发布带有$ resource的JSON对象)

我想我应该从input type ="file"开始,但后来发现AngularJS无法绑定到那个..

我能找到的所有例子都是用于拖放jQuery插件的拖放.我想要一个简单的上传一个文件.

我是AngularJS的新手,对编写我自己的指令感到不舒服.

angularjs angularjs-fileupload

142
推荐指数
4
解决办法
27万
查看次数

fetch - multipart/form-data POST中缺少边界

谢谢你的光临.

我想送new FormData()body一个的POST使用请求提取API

操作看起来像这样

var formData = new FormData()
formData.append('myfile', file, 'someFileName.csv')

fetch('https://api.myapp.com', 
  {
    method: 'POST',
    headers: {
      "Content-Type": "multipart/form-data"
    },
    body: formData
  }
)
Run Code Online (Sandbox Code Playgroud)

这里的问题是边界,类似的东西

boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

从来没有进入Content-Type:标题

它看起来应该是这样的

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

当你用a尝试"相同"的操作时new XMLHttpRequest(),就像这样

var request = new XMLHttpRequest()
request.open("POST", "https://api.mything.com")
request.withCredentials = true
request.send(formData)
Run Code Online (Sandbox Code Playgroud)

标题已正确设置

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu

所以我的问题是,

  1. 我如何使这种情况fetch完全像XMLHttpRequest

  2. 如果这不可能,为什么?

谢谢大家!这个社区或多或少是我取得职业成功的原因.

javascript xmlhttprequest form-data fetch fetch-api

38
推荐指数
6
解决办法
3万
查看次数

使用Swift中的multipart form-data iOS上传图片

我在使用multipart-form上传图片时遇到问题

这是我从这个答案中使用的代码

    var request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = "POST"

    var boundary = generateBoundaryString()
    request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

    var body = NSMutableData()

    if self.img.image != nil {
        var imageData = UIImagePNGRepresentation(self.img.image)

        if imageData != nil {
            body.appendString("--\(boundary)\r\n")
            body.appendString("Content-Disposition: form-data; name=\"image\"; filename=\"image.png\"\r\n")
            body.appendString("Content-Type: image/png\r\n\r\n")
            body.appendData(imageData!)
            body.appendString("\r\n")
        }

    }

    body.appendString("--\(boundary)--\r\n")
    request.setValue("\(body.length)", forHTTPHeaderField:"Content-Length")
    request.HTTPBody = body
Run Code Online (Sandbox Code Playgroud)

然后我使用NSURLSession来应用请求

服务器说我没有选择上传图片我只想暂时上传图片

我是否必须使用图像路径上传任何图像,或者它的数据是否足够?

我是否会错过任何事情,有什么帮助才能理解这一点?

file-upload image multipartform-data ios swift

26
推荐指数
4
解决办法
5万
查看次数

如果表格数据边界包含在附件中怎么办?

我们multipart/form-data 来自w3.com的以下示例:

Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x
Content-Disposition: form-data; name="submit-name"

Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--AaB03x--
Run Code Online (Sandbox Code Playgroud)

这很简单,但是假设您正在编写实现此功能的代码并从头开始创建这样的请求.假设file1.txt是由用户创建的,我们无法控制其内容.

如果文本文件file1.txt包含字符串--AaB03x怎么办?您可能AaB03x随机生成边界,但让我们假设"百万只猴子进入百万网络表单"场景.

有没有一种标准的方法来处理这种不可能但仍然可能的情况?

应该text/plain(或者甚至可能像image/jpegapplication/octet-stream)是"编码"或部分内以某种方式"逃"的信息?

或者开发人员是否应始终搜索文件的内容以获取边界,然后反复继续选择一个新的随机生成的边界,直到在文件中找不到所选的字符串?

forms http multipartform-data

12
推荐指数
1
解决办法
2120
查看次数

如何上传大文件(?3GB)到FastAPI后端?

我正在尝试将一个大文件 (\xe2\x89\xa53GB) 上传到我的 FastAPI 服务器,而不将整个文件加载到内存中,因为我的服务器只有 2GB 可用内存。

\n

服务器端

\n
async def uploadfiles(upload_file: UploadFile = File(...):\n
Run Code Online (Sandbox Code Playgroud)\n

客户端

\n
m = MultipartEncoder(fields = {"upload_file":open(file_name,\'rb\')})\nprefix = "http://xxx:5000"\nurl = "{}/v1/uploadfiles".format(prefix)\ntry:\n    req = requests.post(\n    url,\n    data=m,\n    verify=False,\n            )\n
Run Code Online (Sandbox Code Playgroud)\n

返回:

\n
async def uploadfiles(upload_file: UploadFile = File(...):\n
Run Code Online (Sandbox Code Playgroud)\n

我不确定MultipartEncoder实际发送到服务器的内容,因此请求不匹配。有任何想法吗?

\n

python file-upload starlette fastapi python-requests-toolbelt

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

多部分表单解析错误 - 多部分中的无效边界:无

我很沮丧,找不到解决方案:

我正在使用 angularjs 和 nodejs 创建一个项目。我从 node js 中的 angular 端获取图像数据并将此数据发送到进一步的 api。我收到错误

{
  "error": {
    "detail": "Multipart form parse error - Invalid boundary in multipart: None"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我在 nodejs 端的代码:

var request = require('request');
    console.log(req.files);
var data = {

        website:'www.gamail.xom',
        contact_number:'dsdsd',
        services_offered:'dsadasd',
        contact_name:'dasdas',
        provider_category:'exchange',
        email:'kk@gmail.com',
        image:req.files

    }
var api_url = global.common.base_url + 'vcard/1.0.0/visit_card/' + req.param('uuid') +'/';
    request({
        url: api_url,
        method: 'PUT',
        headers: {
            'Content-Type': 'multipart/form-data',
            'Authorization': 'Bearer '+req.cookies.apitoken
        },
        json: data

    }, function(error, response, body) {
        if(response.statusCode == 200 …
Run Code Online (Sandbox Code Playgroud)

form-data node.js angularjs

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

当pytest与REST框架交互时,PATCH和PUT不能按预期工作

我正在使用django REST框架构建API.

为了测试这个API,我使用pytest和测试客户端,如下所示:

def test_doesnt_find(self, client):
    resp = client.post(self.url, data={'name': '123'})
    assert resp.status_code == 404
Run Code Online (Sandbox Code Playgroud)

要么

def test_doesnt_find(self, client):
    resp = client.get(self.url, data={'name': '123'})
    assert resp.status_code == 404
Run Code Online (Sandbox Code Playgroud)

在使用REST框架的常规GET,POST和DELETE类时(例如DestroyAPIView,RetrieveUpdateAPIView或仅APIView使用get和post函数)都可以工作

我遇到问题的地方是使用PATCH和PUT视图.如RetrieveUpdateAPIView.在这里,我突然不得不使用:

resp = client.patch(self.url, data="name=123", content_type='application/x-www-form-urlencoded')
Run Code Online (Sandbox Code Playgroud)

要么

resp = client.patch(self.url, data=json.dumps({'name': '123'}), content_type='application/json')
Run Code Online (Sandbox Code Playgroud)

如果我只是尝试像我习惯的那样使用测试客户端,我会收到错误:

rest_framework.exceptions.UnsupportedMediaType: Unsupported media type "application/octet-stream" in request.
Run Code Online (Sandbox Code Playgroud)

当我在client.patch()调用中指定'application/json'时:

rest_framework.exceptions.ParseError: JSON parse error - Expecting property name enclosed in double quotes: line 1 column 2 (char 1)`
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这种行为吗?特别难以捕捉,因为卷曲只是用得很好-X PATCH …

python put django-rest-framework pytest-django

10
推荐指数
1
解决办法
3003
查看次数