ajax异步附件上传,AJAX异步上传文件

我的JSP:

function ajaxFileUpload(){

//开始上传文件时显示一个图片,文件上传完成将图片隐藏

//$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();});

//执行上传文件操作的函数

$.ajaxFileUpload({

//处理文件上传操作的服务器端地址(可以传参数,已亲测可用)

url:'${pageContext.request.contextPath}/uploadSave.do',

secureuri:false,                           //是否启用安全提交,默认为false

fileElementId:'imgFile',               //文件选择框的id属性

dataType:'text',                           //服务器返回的格式,可以是json或xml等

success:function(data, status){            //服务器响应成功时的处理函数

data = data.replace(/

/g, '');  //ajaxFileUpload会对服务器响应回来的text内容加上
text
前后缀

data = data.replace(/

/g, '');

data = data.replace("

", '');

data = data.replace("

", '');

data = data.replace("

", '');

data = data.replace("

", '');     //本例中设定上传文件完毕后,服务端会返回给前台[0`filepath]

if(data.substring(0, 1) == 0){         //0表示上传成功(后跟上传后的文件路径),1表示失败(后跟失败描述)

$("img[id='uploadImage']").attr("src", data.substring(2));

$("img[id='uploadImage']").css("display", "");

$('#result').html("图片上传成功
");

}else if(data.substring(0, 1) == 1){

$('#result').html('图片格式只能是jpg、jpeg、bmp、gif,请重试!!');

}else{

$('#result').html('图片上传失败,请重试!!');

}

},

error:function(data, status, e){ //服务器响应失败时的处理函数

$('#result').html('图片上传失败,请重试!!');

}

});

//            $(document).getElementById("uploadForm").submit();

}

@RequestMapping(value="uploadSave.do")

public String saveUpload(HttpServletRequest request,@RequestParam MultipartFile[] myfiles,HttpServletResponse response) throws IOException {

String path = "";

MultipartFile imgFileName = myfiles[0];

//

List fileTypes = new ArrayList();

fileTypes.add("jpg");

fileTypes.add("jpeg");

fileTypes.add("bmp");

fileTypes.add("gif");

String booleanString = "";

if(imgFileName.getOriginalFilename()!=null||!"".equals(imgFileName.getOriginalFilename())){

booleanString = this.getFile(imgFileName, fileTypes,request);

}

//设置响应给前台内容的PrintWriter对象

PrintWriter out = response.getWriter();

String outPrint = "0`" +  "/upload/" + imgFileName.getOriginalFilename();

if("1".equals(booleanString)){

outPrint = "1`" +  "/upload/" + imgFileName.getOriginalFilename();

}

out.print(outPrint);

out.flush();

return null;

}

private String getFile(MultipartFile imgFileName,List fileTypes,HttpServletRequest request)throws IOException {

String fileName = imgFileName.getOriginalFilename();

//获取上传文件类型的扩展名,先得到.的位置,再截取从.的下一个位置到文件的最后,最后得到扩展名

String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());

//对扩展名进行小写转换

ext = ext.toLowerCase();

String uploadFileName = "";

if(fileTypes.contains(ext)) {                      //如果扩展名属于允许上传的类型,则创建文件

//            file = this.creatFolder(imgFileName,fileName);

String uploadPath = "/upload";

String realUploadFilePath = request.getSession().getServletContext().getRealPath(uploadPath);

String realUploadFileName = realUploadFilePath + File.separator + fileName;

uploadFileName = uploadPath + "/" + fileName;

//            if(!StringUtils.isEmpty(dir)){

//                realUploadFilePath = realUploadFilePath + File.separator + dir;

//                uploadFilePath = uploadFilePath + "/" + dir;

//            }

InputStream in = imgFileName.getInputStream();

moveFileToPath(in,realUploadFileName);

//            try {

//                imgFileName.transferTo(file);                   //保存上传的文件

//            } catch (IllegalStateException e) {

//                e.printStackTrace();

//            } catch (IOException e) {

//                e.printStackTrace();

//            }

} else{

uploadFileName = "1";

}

return uploadFileName;

}

public static void moveFileToPath(InputStream is,String path) throws IOException{

File newfile = new File(path);

// 新文件目录不存在,则创建

newfile = newfile.getParentFile();

if (!newfile.exists()){

newfile.mkdirs();

}

FileOutputStream fos = new FileOutputStream(path);

int count = 0;

byte[] buffer = new byte[8192];

while ((count = is.read(buffer)) != -1){

fos.write(buffer, 0, count);

}

fos.close();

is.close();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值