作者Expsun (无限燃烧)
看板java
标题[J2EE] Content-Disposition
时间Thu Dec 5 22:04:50 2013
一、前言
各位先进大家好,小弟最近在看良葛格的Servlet & JSP教学手册。
跟着范例做的时候遇到了一个问题,然而始终不了解问题发生的原因。
於是Google了以下的关键字:
1. Content-Disposition
2. Part.getHeader
3. header; filename;
都无法找到问题的解答,於是在此PO文向各位先进请教。
二、作业环境
Windows 7 64-bit
JDK1.70_45
Apache Tomcat 7.0
Eclipse Indigo
三、问题陈述
在书本第三章的部份提到了可以用java.servlet.http.Part的getHeader方法
处理档案上传的需求,然而getHeader方法传回的内容中,filename的部份
始终都是传回绝对路径...
例:filename="C:/downloads/test.jpg"
而非filename="test.jpg"
而在另一台同样作业环境的主机下测试得到的结果却是相反的...
四、程式码
1. HTML部份
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="upload2.do" method="post"
enctype="multipart/form-data">
上传相片:<input type="file" name="photo" /><br><br>
<input type="submit" value="上传" name="upload" />
</form>
</body>
</html>
2. Servlet部份
package test;
import java.io.*;
...
...
import部份省略以免占太多版面
@MultipartConfig(location="C:/workspace")
@WebServlet("/upload2.do")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
request.setCharacterEncoding("UTF-8");
Part part=request.getPart("photo");
String fileName=getFileName(part);
part.write(fileName);
}
private String getFileName(Part part)
{
String header=part.getHeader("Content-Disposition");
String fileName=header.substring(
header.indexOf("filename=\"")+10,
header.lastIndexOf("\""));
return fileName;
}
}
程式码的部份都是照抄书本上的
想请问各位先进Content-Disposition的内容中
filename的部份是否会因为eclipse、浏览器…或是其他因素的设定不同
而造成以上的结果呢?
以上
麻烦各位先进提供说明或是关键字
若有说明不够详细的部份 还请各位不吝指教 谢谢<(__ __)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.182.35.28
1F:→ sbrhsieh:跟浏览器实作有关。只有档名(没路径)比较合理。 12/05 22:47
2F:→ Expsun:可是我两台电脑都是用Eclipse的internal web browser @@... 12/06 05:40
3F:→ Expsun:出现不合理状况的那台要设成ie才会只有档案,firefox就会 12/06 05:43
4F:→ Expsun:发生问题 谢谢sbrihsieh大! 12/06 05:48