作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个显示文件浏览器和上传按钮的 .jsp 页面,以及一个应该将文件上传到服务器的 Servlet。问题是文件已上传到临时文件夹,但我需要将其上传到服务器上的特定路径,但无法识别该路径。
UploadServlet: doPost 方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
// get access to file that is uploaded from client
Part p1 = request.getPart("file");
InputStream is = p1.getInputStream();
String filename = getFilename(p1);
// get temporary path - this works but it saves on a tmp folder...
//String outputfile = this.getServletContext().getRealPath(filename); // get path on the server
//hardcoded path on which I have to save my file
String outputfile = "http://localhost:8080/Tutorial2/Upload/" + filename;
FileOutputStream os = new FileOutputStream (outputfile);
// write bytes taken from uploaded file to target file
int ch = is.read();
while (ch != -1) {
os.write(ch);
ch = is.read();
}
os.close();
out.println("<h3>File uploaded successfully!</h3>");
}
catch(Exception ex) {
out.println("Exception -->" + ex.getMessage());
}
finally {
out.close();
}
}
private static String getFilename(Part part) {
for (String cd : part.getHeader("content-disposition").split(";")) {
if (cd.trim().startsWith("filename")) {
String filename = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
return filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
}
}
return null;
}
.jsp 页面
<form action="UploadServlet" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Select File : </td>
<td><input name="file" type="file"/> </td>
</tr>
</table>
<p/>
<input type="submit" value="Upload File"/>
</form>
我看过很多关于这个问题的帖子,但都没有帮助我。当我运行我的 servlet 时,我在 FileOutputStream os = new FileOutputStream (outputfile);
- Exception -->http:\localhost:8080\Tutorial2\Upload\SvnBridge.exe (The文件名、目录名或卷标语法不正确)
。搜索这个并没有找到任何相关的东西。我不知道它是否有帮助,但我使用 Servlet 3.0 和 Apache Tomcat v7。
你知道为什么我不能把我的文件写到上面的路径吗?
谢谢,
最佳答案
类似问答 How to set the path to "context path" for uploaded files using Apache Common fileupload?
使用java.io.File
String relativeWebPath = "/WEB-INF/uploads";
String absoluteFilePath = getServletContext().getRealPath(relativeWebPath);
File uploadedFile = new File(absoluteFilePath, FilenameUtils.getName(item.getName()));
// ...
关于java - 在硬编码的服务器路径上上传文件 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16031818/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!