文件上传的路径问题

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

回到顶部