感觉出错原因是少了什么配置,File数据没有提交到后台
代码如下:
java代码:
package com.hl.fleetingtime.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class FileAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private File file; private String fileFileContentType; private String fileFileName; private String filePath; public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public void fileUpload() throws Exception{ String path = ServletActionContext.getServletContext().getRealPath("/upload"); File file = new File(path); // 判断文件夹是否存在,如果不存在则创建文件夹 if (!file.exists()) { file.mkdir(); } try { File f = this.getFile(); // this.getFile() 为空值,为什么?? FileInputStream inputStream = new FileInputStream(f); FileOutputStream outputStream = new FileOutputStream(path + "\\" + fileFileName); byte[] buf = new byte[1024]; int length = 0; while ((length = inputStream.read(buf)) != -1) { outputStream.write(buf, 0, length); } inputStream.close(); outputStream.flush(); // message = path + "\\" + this.getFileFileName(); } catch (Exception e) { e.printStackTrace(); // message = "2"; } } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileFileContentType() { return fileFileContentType; } public void setFileFileContentType(String fileFileContentType) { this.fileFileContentType = fileFileContentType; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } }struts.xml 文件:
<package name="default" namespace="/" extends="json-default"> <action name = "user-*" class = "userAction" method = "{1}"> </action> <!-- 文件上传 --> <action name="fileUploadAction" class="com.hl.fleetingtime.utils.FileAction" method="fileUpload"> <result type="json" name="success"> <param name="contentType">text/html</param> </result> </action> </package>
js 代码:
$.ajaxFileUpload( { url : $baseUrl+"/fileUploadAction.action", secureuri : false, //一般设置为false fileElementId :"file1", //文件上传空间的id属性 dataType : 'json', //返回值类型 一般设置为json success : function(data, status) { var fileNames = data.fileFileName; //返回的文件名 var filePaths = data.filePath; //返回的文件地址 /* for(var i=0;i<data.fileFileName.length;i++){ //将上传后的文件 添加到页面中 以进行下载 $("#down").after("<tr><td height='25'>"+fileNames[i]+ "</td><td><a href='downloadFile?downloadFilePath="+filePaths[i]+"'>下载</a></td></tr>") } */ } });
jsp页面:
<div class="fileimg"> <input type = "file" name = "file" id = "file1"/> </div>
本人小白一枚,网上写法和自己的差不多,是在是找不出来了,求教,谢谢
你有js代码调用$.ajaxFileUpload()方法吗?难道选了文件就能自动上传? ######回复 @小栗子hl : fileFileContentType改为fileContentType。######有啊,我只是没有贴出来罢了。。现在问题是进入到JAVA代码之后,File为Null,所以出错######你调试一下,贴出ajax请求的 返回结果。就这样看要看到什么时候######回复 @小栗子hl : 贴出请求返回的response出来看看吧######因为进入到JAVA文件之后,File取值为null,所以并没有执行上传操作。我想知道为什么File会是Null,我哪里做错了######请问你这个问题解决了吗######没有解决哎
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。