开发者社区> 问答> 正文

ssh整合之后使用struts+ajaxfileupload.js上传出错 请求报错 

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

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

展开
收起
kun坤 2020-05-30 15:05:57 538 0
1 条回答
写回答
取消 提交回答
  • 你有js代码调用$.ajaxFileUpload()方法吗?难道选了文件就能自动上传? ######回复 @小栗子hl : fileFileContentType改为fileContentType。######有啊,我只是没有贴出来罢了。。现在问题是进入到JAVA代码之后,File为Null,所以出错######你调试一下,贴出ajax请求的 返回结果。就这样看要看到什么时候######回复 @小栗子hl : 贴出请求返回的response出来看看吧######因为进入到JAVA文件之后,File取值为null,所以并没有执行上传操作。我想知道为什么File会是Null,我哪里做错了######请问你这个问题解决了吗######没有解决哎

    2020-05-30 15:06:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载