servlet怎样读取上传文件的文件名?

寻找亮光 2011-03-16 02:49:22
客户端代码如下:
<form id="addQuestion" method="post" action="/webExam/servlet/TeacherServlet"
target="hidden" encType="multipart/form-data">
<label for="title">
题干:
</label>
<input type="text" name="title" id="title" />
<br />
<label for="url">
文件:
</label>
<input type="file" name="url" contentEditable="false" />
.....
</form>

然后我想在服务端servlet获取上传的文件名:String url=request.getParameter("url");
得到的url却为null

请教一下,怎样才能在服务端获取上传的文件名?

另外,上传的文件保存路径,如果我想设为服务器相对路径,例如/webExam/files,请问有没有可行的方法?谢谢!
...全文
1776 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
colachens 2011-03-16
  • 打赏
  • 举报
回复
MultipartRequest的getParameter()
Spring89 2011-03-16
  • 打赏
  • 举报
回复
可以通过MultipartRequest的getParameter()方法可以获取,你通过HttpServletRequest的getParameter()是获不到的。。。
zn85600301 2011-03-16
  • 打赏
  • 举报
回复
先从request里面 get到文件对象

得到这个File对象后 就可以getFileName 和相对路径/绝对路径
寻找亮光 2011-03-16
  • 打赏
  • 举报
回复
谢谢楼上各位了,问题已经解决,我是这样做的:
客户端代码如下:
<form id="addQuestion" method="post" action="/webExam/servlet/TeacherServlet"
target="hidden_frame" encType="multipart/form-data">
<label for="title">
题干:
</label>
<input type="text" name="title" id="title" />
<br />
<label for="file">
文件:
</label>
<input type="file" name="file" contentEditable="false" id="file"/>
.......
</form>

然后服务端servlet这样写:
//output : root E:\apache-tomcat-6.0.29\webapps\webExam\
String root=getServletContext().getRealPath("/");
request.setCharacterEncoding("utf-8");
MultipartRequest mr=new MultipartRequest(request, root+"\\files","utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
try{//先上传文件,成功了再更新数据库
//题干,源程序存放路径
String title=mr.getParameter("title");
String filename=mr.getFile("file").getName();
System.out.println("title "+title+" filename "+filename);

这样就可以获取text类型的title和file类型的File对象。
如果用HttpServletRequest来获取,那么title会是null
如果用MultipartRequest这个玩意的getParameter("file"),那么返回的也是null,用getFile()获取File对象,然后才能获取它的名字。

分数就分给提到MultipartRequest的两位吧!
  • 打赏
  • 举报
回复
你用了上传组件,还是直接从 HttpServletRequest 自己解析的?
hyman_xie 2011-03-16
  • 打赏
  • 举报
回复
设置服务器相对路径

String fileFolder = "../webapps/fileupload";
new File(fileFolder + "/temp");
宁波朱超 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 cyclone12qwqw12 的回复:]
客户端代码如下:
<form id="addQuestion" method="post" action="/webExam/servlet/TeacherServlet"
target="hidden" encType="multipart/form-data">
<label for="title">
题干:
</label>
<input type="text" name="ti……
[/Quote]

action="/webExam/servlet/TeacherServlet"

action="webExam/servlet/TeacherServlet"
rainsilence 2011-03-16
  • 打赏
  • 举报
回复
文件上传的时候会把文件名保存在http头里

所以你用getHttpHeader就可以看到了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧