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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值