java后台action中获取不到file文件,在线等... 50
前台:<formname="save_form"action="${ctx}/app/home!save.action"method="post"enctype="mul...
前台:
<form name="save_form" action="${ctx}/app/home!save.action" method="post" enctype="multipart/form-data">
<input type="file" id="firstImg" name="firstImg" />
<input type="submit" value="确定" />
</form>
后台Action:
private File firstImg;// 实际上传文件
private String firstImgContentType; // 文件的内容类型
private String firstImgFileName; // 上传文件名
get和set方法封装了上面三个属性
public String save() throws Exception{
String rootPath = this.getRequest().getSession().getServletContext().getRealPath("/");
File file = new File(rootPath);
if(!file.exists()){
file.mkdirs();
}
FileUtils.copyFile(firstImg, new File(file,firstImgFileName));
return NONE;
}
firstImgContentType和firstImgFileName这两个文件类型和文件名称都能获取到,
问题出现在firstImg是null的,为什么获取不到该Fiel文件呢?
先谢过各位了,在线等... 展开
<form name="save_form" action="${ctx}/app/home!save.action" method="post" enctype="multipart/form-data">
<input type="file" id="firstImg" name="firstImg" />
<input type="submit" value="确定" />
</form>
后台Action:
private File firstImg;// 实际上传文件
private String firstImgContentType; // 文件的内容类型
private String firstImgFileName; // 上传文件名
get和set方法封装了上面三个属性
public String save() throws Exception{
String rootPath = this.getRequest().getSession().getServletContext().getRealPath("/");
File file = new File(rootPath);
if(!file.exists()){
file.mkdirs();
}
FileUtils.copyFile(firstImg, new File(file,firstImgFileName));
return NONE;
}
firstImgContentType和firstImgFileName这两个文件类型和文件名称都能获取到,
问题出现在firstImg是null的,为什么获取不到该Fiel文件呢?
先谢过各位了,在线等... 展开
5个回答
展开全部
你好,这样单纯的拷贝文件是不可以的,必须要用到上传的组件,
常用的上传组件:
Apache 的 Commons FileUpload
JavaZoom的UploadBean
jspSmartUpload
网上这方面的资料太多了,FileUpload是较经常使用的,大致上传代码是
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {
System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
} else {
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
System.out.println("上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
//上传文件的保存路径
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
item.write(file);
request.setAttribute("upload.message", "上传文件成功!");
}else{
request.setAttribute("upload.message", "没有选择上传文件!");
}
}
}
}catch(FileUploadException e){
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("upload.message", "上传文件失败!");
}
希望可以帮助到你
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
firstImg这个字段是不是没有get、set方法?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要是文件路径吗,还是什么啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没写firstfile的get set方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
${ctx}/app/home!save.action 你这里怎么用的! 不是问号的吗..
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询