感觉出错原因是少了什么配置,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,我哪里做错了######请问你这个问题解决了吗######没有解决哎