gpt4 book ai didi

java - 在 Java Servlet 中上传文件

转载 作者:行者123 更新时间:2023-12-01 14:02:36 24 4
gpt4 key购买 nike

我有一个 Java 动态 Web 项目,并且正在使用 TomCat v7.0。

我是网络项目的新手,我不太明白如何在我的 jsp 页面之一中上传文件。由于我的项目只是本地的,所以我认为我可以使用多部分形式,其中人们可以选择文件(并且这部分很好),然后从我的 Servlet 检索文件路径。但我无法完成这部分,它似乎只给我文件的名称,而不是它的整个路径。

有人能指出我正确的方向吗?我读过几篇关于 Apache 文件上传和从多部分表单中检索信息的文章,但似乎没有什么对我有帮助。

如何从表单获取文件路径,或者如何获取上传的文件以在我的 Java 类中使用?

提前致谢。

.jsp:

<form method="post" action="upload" enctype="multipart/form-data">
<input type="file" name="filePath" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"></input>
<input type="submit" value="Enviar"></input>
</form>

Java Servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
out.println("<html><body>");

try
{
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items)
{
if (item.isFormField())
{
// Process regular form field (input type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();

out.println("<h1>"+fieldname+" / "+fieldvalue+"</h1>");
}
else
{
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = item.getName();
InputStream filecontent = item.getInputStream();
String s = filecontent.toString();
out.println("<h1>"+s+" / "+filename+"</h1>");
item.write(null);
}
}
}
catch (FileUploadException e)
{
throw new ServletException("Cannot parse multipart request.", e);
}
catch (Exception e)
{
e.printStackTrace();
}

out.println("</body></html>");
}

最佳答案

不提供文件路径是浏览器的一项安全功能。

您的代码中有可用的文件内容 (InputStream filecontent),因此您可以使用它或使用 FileItem 上的一种便捷方法,例如

item.write(new File("/path/to/myfile.txt"));

关于java - 在 Java Servlet 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com