上传后, 后台解析request内容为空,是什么问题?
wx.uploadFile({
url: 'http://192.168.1.102:8888/base_service/file/upload',
filePath: that.data.tempFilePaths[0],
method: 'POST',
name: 'fileName', // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
header: { "content-type": "multipart/form-data", 'accept': 'application/json', }, //HTTP 请求 Header , header 中不能设置 Referer
formData: {
'user': 'test',
},
success: function (res) {
console.log(statusCode, res);
wx.showModal({
title: '上传文件返回状态',
content: statusCode+'成功' + res.msg,
success: function (res) {
if (res.confirm) {
console.log('用户点击确定')
}
}
})
// App.HttpService.savFiles(params)
// .then(data => {
// console.log(data)
// if (data.ret == 0) {
// this.showToast(data.msg)
// }
// })
}, fail: function (err) {
console.log(statusCode, err);
}
});
-----------------------------------------后台代码--------------
@RequestMapping(value ="file/upload", method = RequestMethod.POST)
@ResponseBody
public BaseResult fileUpload(HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException {
BaseResult result=BaseResult.createPrepareResult();
Map<String,Object> map=result.getMap();
List<Map<String,Object>> listMap= new ArrayList<Map<String, Object>>(); ;
try{
request.setCharacterEncoding("UTF-8");
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
factory.setRepository(tempPathFile);// 设置缓冲区目录
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
//3、判断提交上来的数据是否是上传表单的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
System.out.println("传统方式上传文件 ");
//return;
}
List<FileItem> items = upload.parseRequest(request); // 得到所有的文件 这里为空???
Iterator<FileItem> i = items.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
if (fileName != null) {
File fullFile = new File(new String(fi.getName().getBytes(), "utf-8")); // 解决文件名乱码问题
File savedFile = new File(uploadPath, fullFile.getName());
fi.write(savedFile);
}
}
怎么解决的?
大神,我也遇到你发的这个问题能教一下我吗???我也获取不到
一次只能传一个
上传多个文件时,
const uploadTask = wx.uploadFile({ url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址 filePath: tempFilePaths[0], name: 'file', formData:{ 'user': 'test' }, success: function(res){ var data = res.data //do something } })
tempFilePaths[0]
这里为啥只能指定一个文件路径,多个文件如何不行,转换成字符串后,报错,晕;
WAService.js:4 uploadFile:fail createUploadTask:fail file not found
什么情况,不支持多个 、??
yuhao 下午好
可以加我的微光号:guang'zhibaobao
求教 谢谢
都是大侠
好的,解决了
本地模拟测试也要用https吗?那如何测试!!
好像要用https请求
这是测试你明白吗,就是因为接受不到数据