我是靠谱客的博主 义气豌豆,最近开发中收集的这篇文章主要介绍java上传文件 415,【已解决】Mac中Postman去POST实现文件上传时出错:HTTP 415 Unsupported Media Type...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

去调试一个Java写的上传(图片)文件的一个REST接口:POST 192.168.0.128:81/ucows/upload/upload/cowImage/1111-11-cs/right

然后设置headersAuthorization: Bearer 6c9f198878cb42e6aad83fecbb598d10_8a9bfdab5a21ca27015a21d72fb20000

Content-Type: application/json; charset=UTF-8

此处设置了body中是form-data,类型为File,且上传了一个jpg图片文件:

1a362df79a69ec36c2e7d970ce9ab348.png

但是:

Windows中的POSTMAN,是可以正常的,服务器可以接收到正常的调用。

但是Mac中的PostMan却会出错:{

"code": 415,

"message": "HTTP 415 Unsupported Media Type"

}

2ab8bd78ef6d8d84b96665e8e7e65cbd.png

搜:

postman file HTTP 415 Unsupported Media Type

参考:

加上:

Accept: application/json

结果问题依旧,还是415错误。

且有时候会返回html的错误内容:

daee9428e460edbd27086baf8acb9cb3.png

觉得此处的:

content-type好像有点不对,

因为此处上传的是文件(的二进制数据?)

所以至少Content-Type不是application/json

所以去搜,需要搞清楚,上传file的时候,Content-Type应该是什么:

upload file formdata content-type

参考:

上传文件时,(Content-Type)的文件编码enctype一般有三种值:x-www-urlencoded

multipart/form-data

text-plain

且看到:

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

即:

往往还会指定对应的boundary

不知道此处设置boundary为何值?

先去加上:

multipart/form-data

bf501df7f999f95a473122397716f79f.png

试试,服务器端就可以接收到此调用(至少代码进了对应的断点了)

然后接着调试,确保文件的确可以正常上传。

好像最后还是需要加上boundary,才能正常传输文件的。

又配合后台继续调试:

对于加上boundary:

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

结果说是400 bad request:

35674945b9f495d030bd233c78c6776c.png

不加上boundary的话:

Content-Type: multipart/form-data

也是400:

e99399f4d602099594cc14fc519534e4.png

去掉Content-Type:

结果就可以正常上传文件了。

acb12be72c31904ec4e585311dc79d58.png

而对应的后台的java代码,说是就是用的普通的库和写法,不知道为何此处如果设置了

Content-Type: multipart/form-data

为何无效,而取消这个设置,就可以正常上传文件了:

原始图片:

5292f83f827cb641d38c3dc3af7bf971.png

缩略图:

a720bae202d697b1c8c1db0e75c6e25a.png

【总结】

按照道理来说,如果是上传文件的话,此处的postman中的配置(加上对应的后台服务器代码的写法,好像是应该这么写)

POST xxx/xxx/upload

Headers:Authorization: Bearer 6c9f198878cb42e6aad83fecbb598d10_8a9bfdab5a21ca27015a21d72fb20000

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

Accept: application/json

ba4b6516c78eb56ceb1ebabd15fd3b1a.png

Body:

form-data,类型为File,然后上传文件

5a7e99b66c37fd2f002db632ae783bfe.png

即可。

不过此处实际上是:

不要加上 Content-Type

然后才可以正常上传文件。

具体的原因,暂未深究。有空再说。

最后

以上就是义气豌豆为你收集整理的java上传文件 415,【已解决】Mac中Postman去POST实现文件上传时出错:HTTP 415 Unsupported Media Type...的全部内容,希望文章能够帮你解决java上传文件 415,【已解决】Mac中Postman去POST实现文件上传时出错:HTTP 415 Unsupported Media Type...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部