使用了百度的WebUploader上传组件,我要怎么写后台代码来实现保存在本地?
我看了4个demo,都使用了Commons-fileupload 来实现。
可是单独使用commons-fileupload不使用webupload这类上传组件也可以吧?
那么使用WebUploader的意义是什么呢?
// 创建文件上传核心类
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
// 设置编码
sfu.setHeaderEncoding("UTF-8");
// 设置上传的单个文件的最大字节数为2M
sfu.setFileSizeMax(1024 * 1024 * 2);
// 设置整个表单的最大字节数为10M
sfu.setSizeMax(1024 * 1024 * 10);
try {
// 处理表单请求
List itemList = sfu.parseRequest(request);
Iterator it = itemList.iterator();
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
// 对应表单中的控件的name
String fieldName = fileItem.getFieldName();
System.out.println("控件名称:" + fieldName);
// 如果是普通表单控件
if (fileItem.isFormField()) {
String value = fileItem.getString();
//处理逻辑
} else { // 上传文件
// 获得文件大小
long size = fileItem.getSize();
// 获得文件名
String fileName = fileItem.getName();
System.out.println("文件名:" + fileName + "\t大小:" + size + "byte");
// 设置不允许上传的文件格式
if (fileName.endsWith(".exe")) {
request.setAttribute("msg", "不允许上传的类型!");
} else {
// 将文件保存到指定的路径
File file = new File(savePath, fileName);
fileItem.write(file);
request.setAttribute("msg", "上传成功!");
}
}
}
} catch (FileSizeLimitExceededException e) {
request.setAttribute("msg", "文件太大");
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}