multipart/mixed 和 multipart/form-date 都是多文件上传的格式。区别在于,multipart/form-data 是一种特殊的表单上传,其中普通字段的内容还是按照一般的请求体构建,文件字段的内容按照 multipart 请求体构建,后端在处理 multipart/form-data 请求的时候,会在服务器上建立临时的文件夹存放文件内容,可参看。而 multipart/mixed 请求会将每个字段的内容,不管是普通字段还是文件字段,都变成 stream 流的方式去上传,因此后端在处理 multipart/mixed 的内容时,必须从 stream流中处理。
part signpart = request.getpart(constants.sign_key); part appidpart = request.getpart(constants.appid_key); part noncestrpart = request.getpart(constants.noncestr_key); map<string, string[]> parammap = new hashmap<>(8); parammap.put(signpart.getname(), new string[]{stream2str(signpart.getinputstream())}); parammap.put(appidpart.getname(), new string[]{stream2str(appidpart.getinputstream())}); parammap.put(noncestrpart.getname(), new string[]{stream2str(noncestrpart.getinputstream())});
private string stream2str(inputstream inputstream) { bufferedreader reader = null; try { reader = new bufferedreader(new inputstreamreader(inputstream, "utf-8")); string line; stringbuffer buffer = new stringbuffer(); while ((line = reader.readline()) != null) { buffer.append(line); } return buffer.tostring(); } catch (unsupportedencodingexception e) { e.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } finally { try { reader.close(); } catch (ioexception e) { e.printstacktrace(); } } return ""; }
@responsebody @requestmapping(value = {"/token/user/uploadimage.yueyue", "/token/user/uploadimage"}, method = {requestmethod.post, requestmethod.get}) public ajaxlist uploadimage( @requestpart (required = false) string token, @requestpart (required = false) string sign, @requestpart (required = false) string appid, @requestpart (required = false) string noncestr, @requestpart multipartfile avatar, httpservletrequest request) { }
如对本文有疑问, 点击进行留言回复!!
现在微服务这么火,你还不了解吗?阿里P8推荐的微服务学习指南
论文笔记:SlowFast Networks for Video Recognition
网友评论