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文件呢?
先谢过各位了,在线等...
展开
 我来答
百度网友e7102d2
2015-03-02 · TA获得超过1083个赞
知道小有建树答主
回答量:428
采纳率:66%
帮助的人:642万
展开全部

  你好,这样单纯的拷贝文件是不可以的,必须要用到上传的组件,

  常用的上传组件:

  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", "上传文件失败!");
  }

  希望可以帮助到你

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
易建议
2017-07-06 · 喜欢分享的人都容易获得幸福感~
易建议
采纳数:344 获赞数:1342

向TA提问 私信TA
展开全部
firstImg这个字段是不是没有get、set方法?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
life大地皇者
2017-07-06 · 心理咨询师
life大地皇者
采纳数:2990 获赞数:23190

向TA提问 私信TA
展开全部
你要是文件路径吗,还是什么啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无疆2468
2017-07-06 · TA获得超过252个赞
知道答主
回答量:140
采纳率:47%
帮助的人:14.1万
展开全部
没写firstfile的get set方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GoddardHugh
推荐于2018-03-04 · TA获得超过250个赞
知道答主
回答量:118
采纳率:100%
帮助的人:46.5万
展开全部
${ctx}/app/home!save.action 你这里怎么用的! 不是问号的吗..
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式