相关疑难解决方法(0)

multipart/form-data的边界是什么?

我想问一个关于这个的问题multipart/form-data.在HTTP标头中,我发现了Content-Type: multipart/form-data; boundary=???.

???免费的用户定义?或者它通常来自HTML?我可以定义??? = abcdefg吗?

html forms http

365
推荐指数
3
解决办法
28万
查看次数

使用python请求的多部分数据POST:未找到多部分边界

我有一个表单数据以及要在同一个POST中发送的文件.例如,{duration:2000,file:test.wav}.我在使用python请求的multipart/form-data发布中看到了很多线程.它们很有用,特别是这个.

我的样例请求如下:

    files = {'file': ('wavfile', open(filename, 'rb'))}
    data = {'duration': duration}
    headers = {'content-type': 'multipart/form-data'}
    r = self.session.post(url, files=files, data=data, headers=headers)
Run Code Online (Sandbox Code Playgroud)

但是当我执行上面的代码时,我收到此错误:

5:59:55.338 Dbg 09900 [DEBUG]解析来自handler [null]的异常:org.springframework.web.multipart.MultipartException:无法解析multipart servlet请求; 嵌套异常是org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界.

所以我的问题是:1)如何查看发送请求的内容?无法使用wireshark,它不在网络上.2)为什么编码数据中缺少边界?我错过了什么,请指出.

python multipartform-data python-requests

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

带有MultipartFile的Spring Webflux 415

我目前正在尝试将文件从Angular 4前端上传到Spring Webflux控制器.控制器能够读取@RequestPart值但抛出415 UnsupportedMediaTypeStatusException.

UploadController

@PostMapping( consumes = MediaType.MULTIPART_FORM_DATA_VALUE )
public Mono<Void> save(@RequestPart("file")MultipartFile file) {
    log.info("Storing a new file. Recieved by Controller");
    this.storageService.store(file);
    return Mono.empty();
}
Run Code Online (Sandbox Code Playgroud)

log.info()方法不执行,因此似乎在执行方法之前抛出错误.

错误信息

org.springframework.web.server.UnsupportedMediaTypeStatusException: Response status 415 with reason "Content type 'image/png' not supported"
at org.springframework.web.reactive.result.method.annotation.AbstractMessageReaderArgumentResolver.readBody(AbstractMessageReaderArgumentResolver.java:206) ~[spring-webflux-5.0.4.RELEASE.jar:5.0.4.RELEASE]
at org.springframework.web.reactive.result.method.annotation.AbstractMessageReaderArgumentResolver.readBody(AbstractMessageReaderArgumentResolver.java:124) ~[spring-webflux-5.0.4.RELEASE.jar:5.0.4.RELEASE]
at org.springframework.web.reactive.result.method.annotation.RequestPartMethodArgumentResolver.lambda$resolveArgument$0(RequestPartMethodArgumentResolver.java:99) ~[spring-webflux-5.0.4.RELEASE.jar:5.0.4.RELEASE]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:450) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:450) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:450) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drainAsync(FluxFlattenIterable.java:391) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drain(FluxFlattenIterable.java:633) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.onNext(FluxFlattenIterable.java:238) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:450) ~[reactor-core-3.1.5.RELEASE.jar:3.1.5.RELEASE]
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:87) …
Run Code Online (Sandbox Code Playgroud)

java spring spring-webflux

18
推荐指数
1
解决办法
6019
查看次数

提供的"HttpContent"实例无效.它没有带有'boundary'参数的'multipart'内容类型标头

我正在编写一个web api,它有一个post方法接受从UI上传的文件.

public async Task<List<string>> PostAsync()
    {

        if (Request.Content.IsMimeMultipartContent("form-data"))
        {
            string uploadPath = HttpContext.Current.Server.MapPath("~/uploads");

            var streamProvider = new MyStreamProvider(uploadPath);

            await Request.Content.ReadAsMultipartAsync(streamProvider);

            return streamProvider.FileData
                .Select(file => new FileInfo(file.LocalFileName))
                .Select(fi => "File uploaded as " + fi.FullName + " (" + fi.Length + " bytes)")
                .ToList();
        }
        else
        {
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request!");
            throw new HttpResponseException(response);
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我邮递员要求上述行动.我将content-type标头设置为multipart/form-data,但在执行操作期间发生错误.这是错误信息正文:

"提供了无效的'HttpContent'实例.它没有带'border'参数的'multipart'内容类型标头.\ r \nParameter name:content"

我去了邮差标题,但我发现请求标题内容类型in设置为application-json.

邮差截图

谁能帮我?

file-upload asp.net-web-api postman

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

用于测试的HTTP Post Multipart Tool

有没有人知道一个小测试工具(如Firefox的Rest/RestTool)能够上传文件并在同一个帖子请求(Multipart)中发送文本正文?

rest http http-post firefox-addon

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

如何在Postman中将文件和json数据一起发布?

我知道如何发布json,也知道如何在Postman中以多部分形式发布文件。但是我怎么能一起做。例如:

这是我的杰森要发布的内容:

{
    "title": "Post title yeah",
    "body": "My first post body"

}
Run Code Online (Sandbox Code Playgroud)

那么,如何与上述json一起发布image.jpg位于/home/me/Desktop

更新:请注意,我想这样使用JSON发送文件,所以我的问题与不同,后者是有关使用Postman进行多部分表单发送的。

json postman

5
推荐指数
1
解决办法
6431
查看次数

使用邮递员上传文件

您能告诉我如何在不使用文件选项的情况下上传文件吗?我想知道如何通过以下方法上传文件。

  1. 从正文 - 表单数据 - 输入文本方法
  2. 如何使用 Body - raw - Json 文件类型上传文件

我不想使用“文件”>“选择文件”选项。我想通过 newman 执行并使用“文件”>“选择文件”选项,但它失败了。

我尝试使用下面的方法,但它给出 404 作为响应。

Body - Raw-->
{
"uploadType": "ORDER",
"headerIncluded":"false",
"file":"C:/Users/b3badm/Desktop/SIndoora/FileImport_ValidProducts.txt"
}
Run Code Online (Sandbox Code Playgroud)

postman

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

Django REST Framework文件上传

我正在尝试使用一些表单数据上传文件.为了测试我的api,我使用Postman.当我尝试使用文件和其他字段进行POST时,我收到了此错误

{
  "detail": "JSON parse error - 'utf-8' codec can't decode byte 0xbf in position 10: invalid start byte"
}
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

class Music(models.Model):
    album = models.ForeignKey(Album, related_name='tracks')
    playlist = models.ForeignKey(Playlist, null=True, related_name='tracks')
    name = models.CharField(max_length=200, unique=True)
    dropbox_id = models.CharField(max_length=500, null=True)
    favorite = models.BooleanField(default=False)
    created_at = models.DateField(auto_now_add=True)
    counter = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

串行:

class MusicSerializer(serializers.ModelSerializer):
    file = serializers.FileField(required=True)

    class Meta:
        model = Music
        fields = ('id', 'favorite', 'created_at', 'counter', 'file', 'name', 'album', 'playlist')
Run Code Online (Sandbox Code Playgroud)

并查看:

class MusicViewSet(viewsets.ModelViewSet):
    queryset = Music.objects.all()
    serializer_class = MusicSerializer

    def …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

4
推荐指数
1
解决办法
9375
查看次数

尝试上传视频块时收到 error_subcode 1363030

我尝试使用 graph-api v2.3 和 qNetworkAccessManager 将视频上传到 facebook。我成功通过授权并开始上传过程,但上传第一个块以 http 错误 500 和 facebook api 错误代码 1363030 结束。看起来就像 fb 服务器无法访问,但旧 api (2.1) 工作正常。所以,我想,这可能是我的问题。有一部分代码是我发布视频块的

QNetworkRequest request;
request.setUrl(QUrl(QString("https://graph-video.facebook.com/v2.3/me/videos")));
QHttpMultiPart *body = new QHttpMultiPart(QHttpMultiPart::FormDataType);

_file = new QFile(filename);
_file->open(QIODevice::ReadOnly);

QHttpPart tokenPart, phasePart, sessionPart, offsetPart, dataPart;
tokenPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"access_token\""));
tokenPart.setBody(accessToken.toUtf8());

phasePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload_phase\""));
phasePart.setBody(phaseTransfer.toUtf8());

sessionPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"upload_session_id\""));
sessionPart.setBody(_sessionId.toUtf8());

offsetPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"start_offset\""));
offsetPart.setBody(QString::number(_startOffset).toUtf8());

QHttpPart dataPart;
dataPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"video_file_chunk\""));
QByteArray data = _file->read(_endOffset - _startOffset);
dataPart.setBody(data);

body->append(tokenPart);
body->append(phasePart);
body->append(offsetPart);
body->append(sessionPart);
body->append(dataPart);

_server->post(request, body);
Run Code Online (Sandbox Code Playgroud)

也许有人知道解决方案或者只是有 graph-api v2.3 的工作示例?

facebook facebook-graph-api

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