文件上传的路径问题
public class UploadServlet3 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//检测form是否是multipart/form-data类型的
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
throw new RuntimeException("The form's enctype attribute value must be multipart/form-data");
}
//解析请求内容
DiskFileItemFactory factory = new DiskFileItemFactory(); //产生FileItem的工厂
ServletFileUpload sfu = new ServletFileUpload(factory);
List<FileItem> items = new ArrayList<FileItem>();
try {
items = sfu.parseRequest(request);
} catch (FileUploadException e) {
throw new RuntimeException("解析请求失败");
}
//遍历:
for (FileItem item : items) {
//处理普通字段
if (item.isFormField()) {
processFormField(item);
} else {
//处理上传字段
processUploadField(item);
}
}
}
protected void processUploadField(FileItem item) {
try {
InputStream in = item.getInputStream();
//找一个存放文件的位置;存放的文件名
String fileName = item.getName(); //上传的文件的文件名
if (fileName != null) {
fileName = FilenameUtils.getName(fileName);
}
//存放路径
String realPath = getServletContext().getRealPath("/WEB-INF/files");
File storeDirectory = new File(realPath);
if (!storeDirectory.exists()) {
storeDirectory.mkdirs();
}
//OutputStream out = new FileOutputStream(new File(storeDirectory, fileName));
//int len = -1;
//byte[] b = new byte[1024];
//while ((len = in.read(b)) != -1) {
// out.write(b, 0, len);
//}
//in.close();
//out.close();
item.write(new File(storeDirectory, fileName));
} catch (Exception e) {
e.printStackTrace();
}
}
protected void processFormField(FileItem item) {
//打印到控制台
String fieldName = item.getFieldName();
String fieldValue = item.getString();
System.out.println(fieldName + "=" + fieldValue);
}
}
其中:
//存放路径 String realPath = getServletContext().getRealPath("/WEB-INF/files");
在部署到tomcat中后,并没有发现上传后的文件在WEB-INF目录下,这样不就不能保证服务器端的安全吗?反而是在项目根目录下发现的。
回答:
jsp的表单提交给servlet的路径错误
回答:
WEB-INFO这个路径好像是比较特殊,普通的读写都不能再这个目录下。我之前也遇到过,硬是读不出数据来。
回答:
文件不建议放在应用服务路径下,可以考虑通过配置文件放在特定文件夹下,如果没有特殊的权限要求,这些文件可以通过nginx或者Apache去访问。应用服务器的部署或者重启都可能让文件丢失
以上是 文件上传的路径问题 的全部内容, 来源链接: utcz.com/p/171097.html