感觉出错原因是少了什么配置,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>
$.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>") } */ } });
<div class="fileimg">
<input type = "file" name = "file" id = "file1"/>
</div>
本人小白一枚,网上写法和自己的差不多,是在是找不出来了,求教,谢谢
你有js代码调用$.ajaxFileUpload()方法吗?难道选了文件就能自动上传?