安装插件:
import { Camera, Transfer } from 'ionic-native';
TS代码:
uploadFile(element, callbackType?: any, skip?: string) {
this.nativeService.showLoading(element.name + '文件正在上传', true);
const fileTransfer = new Transfer();
/**
* 上传文件时携带参数,这个是可选项。
*/
var options: any;
var reqUri = GLOBAL_CONST.APP_SERVE_URL + "/bfs/bfs/fileup/appuploadfile";
options = {
fileKey: 'files',
fileName: element.name,
mimeType: this.getMimeType(element.type),
params: {
docID: this.item.docId,
fileName: element.name,
fileType: element.fileType,
takeTime: element.takeTime,
takeUserId: GLOBAL_CONST.USER_INFO['userID'],
takeUserName: element.takeUserName,
takeLongitude: element.takeLongitude,
takeLatitude: element.takeLatitude
},
headers: { sid: GLOBAL_CONST.USER_INFO['token'] }
}
this.evidenceList.splice(0, 1);
//第一个参数是文件的路径,第二个参数是服务器的url,第二个参数也可以是encodeURI(reqUri)
fileTransfer.upload(element.path, reqUri, options).then((data) => {
alert(JSON.stringify(data));
let dataValue = data.response;
let dataObject: any = JSON.parse(dataValue);
if(dataObject.success){
alert(dataObject.fileid);
this.fileList.push(dataObject.fileid);
}
this.nativeService.hideLoading();
if (this.evidenceList.length == 0) {
this.submitAddForm();
}
for (let idx in this.evidenceList) {
this.uploadFile(this.evidenceList[idx], callbackType, skip);
break;
}
}, (err) => {
this.nativeService.hideLoading();
if (this.evidenceList.length == 0) {
this.submitAddForm();
}
for (let idx in this.evidenceList) {
this.uploadFile(this.evidenceList[idx], callbackType, skip);
break;
}
});
}
后台代码:
/**
*
* appUploadFile:APP文件上传
*
* @param files 上传文件裂变
* @param data 预留data数据
* @throws Exception void
*
* 追加时间:2017年10月23日14:13:14
* 追加人:DingXiangGuang
*/
@ResponseBody
@SuppressWarnings("unused")
@RequestMapping(value = "/appuploadfile", method = RequestMethod.POST)
public void appUploadFile(@RequestParam("files") MultipartFile[] files) throws Exception {
Map<String,Object> map = new HashMap<String,Object>();
String path = "";
PrintWriter writer = null;
String orgfilename = "";
try {
Properties pro = new Properties();
pro.load(FileUpController.class.getResourceAsStream("/file.properties"));
DiskFileItemFactory factory = new DiskFileItemFactory();
String filepath = pro.getProperty("path");
path = request.getSession().getServletContext().getRealPath("/")+ "App_"+filepath;
factory.setRepository(new File(path));
factory.setSizeThreshold(1024 * 1024);
for (Integer i = 0; i < files.length; i++) {
orgfilename = files[i].getOriginalFilename(); // 传入名称
String extname = orgfilename.substring(orgfilename.lastIndexOf(".") + 1, orgfilename.length()); //图片后缀
String fileName = UUID.randomUUID().toString().replaceAll("-", ""); //图片当前名称
String serverfilename = fileName + "." + extname; //服务器保存的图片名称
File headPath = new File(path);// 获取文件夹路径
if (!headPath.exists()) {// 判断文件夹是否创建,没有创建则创建新文件夹
headPath.mkdirs();
}
OutputStream out = new FileOutputStream(new File(path, serverfilename));
InputStream in = files[i].getInputStream();
int filesize = in.available();
int length = 0;
byte[] buf = new byte[1024];
while ((length = in.read(buf)) != -1) {
out.write(buf, 0, length);
}
in.close();
out.close();
/** 将上传处理后的数据返回 **/
map.put("orgfilename", orgfilename);
map.put("filepath", (filepath + "\\" + serverfilename));
FileInfoVO fiv = new FileInfoVO();
fiv.setOrgfilename(orgfilename);
fiv.setServerfilename(serverfilename);
fiv.setFilepath(filepath + "\\" + serverfilename);
fiv.setFilesize(new Double(filesize));
fiv.setExtname(extname);
fiv.setCtime(new Date());
fileInfoService.insertSelective(fiv);
map.put("fileid", fiv.getFileid());
map.put("success", "true");
break;
}
response.setContentType("text/xml; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
writer = this.response.getWriter();
String msg = JSON.toJSONString(map);
writer.print(msg);
} catch (Exception e) {
logger.error("上传文件出错:" + e);
map.put("success", "false");
map.put("orgfilename", orgfilename);
map.put("filepath", path);
map.put("error", e.getMessage());
String msg = JSON.toJSONString(map);
if (writer == null) {
writer = this.response.getWriter();
}
writer.print(msg);
} finally {
if (writer != null) {
writer.close();
}
}
}
Spring-MVC配置:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8"></property> <property name="maxUploadSize" value="10485760000"></property> <property name="maxInMemorySize" value="40960"></property> </bean>
文章评论