67,513
社区成员
发帖
与我相关
我的任务
分享
<%@page import="org.apache.commons.lang.StringUtils"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page language="java" import="entity.*,util.*"%>
<%@ page import="java.io.*" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.ProgressListener" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%
request.setCharacterEncoding("utf-8");
String time = request.getParameter("upload-time");
System.out.print("time = " + time);
//配置
int MEMORY_THRESHOLD = 1024 * 1024 * 3;
int MAX_FILE_SIZE = 1024 * 1024 * 100;
int MAX_QUEST_SIZE = 1024 * 1024 * 120;
String savePath = this.getServletContext().getRealPath("WEB-INF/upload");
System.out.println(savePath);
// 临时文件保存目录
String tempPath = this.getServletContext().getRealPath("WEB-INF/upload/temp");
// 如果不存在则创建
File tempFile = new File(tempPath);
if (!tempFile.exists()) {
tempFile.mkdir();
}
// 配置上传参数
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存临界值,超出后将产生临时文件并存储目录
factory.setSizeThreshold(MEMORY_THRESHOLD);
// 设置临时存储目录
factory.setRepository(tempFile);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(new ProgressListener() {
@Override
public void update(long pByteRead, long pContentLength, int arg2) {
System.out.println("文件大小:" + pContentLength + ",当前已处理:" + pByteRead);
}
});
// 设置最大文件上传值
upload.setFileSizeMax(MAX_FILE_SIZE);
// 设置最大请求值
upload.setSizeMax(MAX_QUEST_SIZE);
// 中文
upload.setHeaderEncoding("utf-8");
// 判断是否为表单上传的数据
if (!ServletFileUpload.isMultipartContent(request)) {
PrintWriter writer = response.getWriter();
writer.println("Error: 表单必须包含 enctype=multipart/form-data");
writer.flush();
return;
}
String message = "";
List<FileItem> item = upload.parseRequest(request);
if (item != null && item.size() > 0) {
// 迭代表单数据
for (FileItem fileitem : item) {
// 处理不在表单中的字段
if (fileitem.isFormField()) {
String name = fileitem.getFieldName();
String value = fileitem.getString("utf-8");
//System.out.println(value);
} else {
String filename = fileitem.getName();
System.out.println(filename);
if (filename == null || filename.trim().equals("")) {
continue;
}
// 获取文件名
filename = filename.substring(filename.lastIndexOf("\\") + 1);
System.out.println("上传的文件名为:" + filename);
// 获取文件扩展名
String fileExtName = filename.substring(filename.lastIndexOf(".") + 1);
System.out.println("上传的文件扩展名为:" + fileExtName);
message = "文件上传成功";
saveFile(fileExtName, filename, savePath, fileitem);
}
}
}
%>
<%!
//为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
private String makeFileName(String filename) {
String uuid_name = UUID.randomUUID().toString() + "_" + filename;
return uuid_name;
}
%>
<%!
private void saveFile(String fileExtName, String filename, String savePath, FileItem fileitem) {
String finalPath = "";
try {
if (fileExtName.equals("jpg") || fileExtName.equals("jpeg") || fileExtName.equals("png")
|| fileExtName.equals("gif") || fileExtName.equals("GIF") || fileExtName.equals("bmp")) {
System.out.println("上传文件的扩展名:" + fileExtName);
finalPath = savePath + "/image";
} else if (fileExtName.equals("avi") || fileExtName.equals("mp4") || fileExtName.equals("MP4")
|| fileExtName.equals("rmvb") || fileExtName.equals("mkv")) {
finalPath = savePath + "/video";
} else if (fileExtName.equals("mp3") || fileExtName.equals("wav") || fileExtName.equals("ape")
|| fileExtName.equals("flac") || fileExtName.equals("wma")) {
finalPath = savePath + "/audio";
} else if (fileExtName.equals("txt") || fileExtName.equals("rtf") || fileExtName.equals("doc")
|| fileExtName.equals("xls") || fileExtName.equals("ppt") || fileExtName.equals("pdf")
|| fileExtName.equals("html") || fileExtName.equals("htm")) {
finalPath = savePath + "/texts";
}
File path = new File(finalPath);
if (!path.exists()) {
path.mkdirs();
}
InputStream in = fileitem.getInputStream();
// 得到文件保存的名称
String saveFilename = makeFileName(filename);
// 得到文件的保存目录
// String realSavePath = makePath(saveFilename, saveImage);
// 创建一个文件输出流
FileOutputStream out = new FileOutputStream(finalPath + "\\" + saveFilename);
// 创建一个缓冲区
byte buffer[] = new byte[1024];
// 判断输入流中的数据是否读完
int length = 0;
// 输入流读入到缓存区
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
%>
List<FileItem> item = upload.parseRequest(request);
if (item != null && item.size() > 0) {
String info = "";
String author = "";
String date = "";
String type = "";
String name = "";
Map<String, String[]> map = new HashMap<String, String[]>();
List<String> name_list = new ArrayList<String>();
// 迭代表单数据
for (FileItem fileitem : item) {
// 处理不在表单中的字段
if (fileitem.isFormField()) {
String file_name = fileitem.getFieldName();
String file_value = fileitem.getString("utf-8");
if(name.equals("file-name")){
name = file_value;
System.out.println("上传文件名称:" + name);
}
if (file_name.equals("file-info")) {
info = file_value;
System.out.println("上传信息:" + info);
} else if (file_name.equals("upload-time")) {
date = file_value;
System.out.println("上传时间:" + date);
} else if (file_name.equals("upload-author")) {
author = file_value;
System.out.println("上传作者:" + author);
} else if (file_name.equals("upload-type")) {
type = file_value;
System.out.print("上传类型:" + type);
}
} else {
String filename = fileitem.getName();
System.out.println(filename);
if (filename == null || filename.trim().equals("")) {
continue;
}
// 获取文件名
filename = filename.substring(filename.lastIndexOf("\\") + 1);
System.out.println("上传的文件名为:" + filename);
// 获取文件扩展名
String fileExtName = filename.substring(filename.lastIndexOf(".") + 1);
System.out.println("上传的文件扩展名为:" + fileExtName);
message = "文件上传成功";
saveFile(fileExtName, filename, savePath, fileitem);
System.out.println("数据库存储时间:" + date);
map.put("name", new String[]{name});
map.put("type", new String[]{type});
//map.put("size", size_list.get(0));
map.put("date", new String[]{date});
map.put("author", new String[]{author});
map.put("info", new String[]{info});
File_Res file = File_Res.createModel(File_Res.class, map);
if (file.save()) {
System.out.print("插入一条文件数据");
}
就是map里面都是空值 我知道好像是变量作用域的问题 这个我不知道该怎么解决 怎么把里面的值 传到括号外面呢? 就是把if里面的值 传到else里面 不然我拿到数据之后 不能存到数据库呀 老大 求解 给分!!!!