ssh整合之后使用struts+ajaxfileupload.js 上传文件出错,求教

小栗子hl 发布于 2016/05/08 16:39
阅读 186
收藏 0

感觉出错原因是少了什么配置,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> 

本人小白一枚,网上写法和自己的差不多,是在是找不出来了,求教,谢谢

加载中
0
wuweiwuwei
wuweiwuwei

你有js代码调用$.ajaxFileUpload()方法吗?难道选了文件就能自动上传?

wuweiwuwei
wuweiwuwei
回复 @小栗子hl : fileFileContentType改为fileContentType。
小栗子hl
小栗子hl
有啊,我只是没有贴出来罢了。。现在问题是进入到JAVA代码之后,File为Null,所以出错
0
Broly
Broly
你调试一下,贴出ajax请求的返回结果。就这样看要看到什么时候
Broly
Broly
回复 @小栗子hl : 贴出请求返回的response出来看看吧
小栗子hl
小栗子hl
因为进入到JAVA文件之后,File取值为null,所以并没有执行上传操作。我想知道为什么File会是Null,我哪里做错了
0
起名字太麻烦了
请问你这个问题解决了吗
小栗子hl
小栗子hl
没有解决哎
返回顶部
顶部