jquery form java_java简单多线程方式+实现文件上传(spring mvc + jquery.form.js 框架)

以前做项目也没用过多线程,这次项目里要求的多个图片上传功能,自己觉得学着用多线程来写可能会好些,些的很简陋,请拍砖!正题如下:

1.导包(不说了,反正要spring mvc包,common.io,common-uploade这些包和jqury.form.js等js包)

2.jsp页面:

图片1:

  loading.gif

图片2:

  loading.gif

图片3:

  loading.gif

图片4:

  loading.gif

图片5:

  loading.gif

$(document).ready(function() {

/* 图片上传 */

$(".imgSave").click(function(){

var objhid = $(this).next().val();

if ($("#imgInput"+objhid).val() == "") {

alert("please select a p_w_picpath to upload!");

return;

}

$("#imgid"+objhid).css("display","block");

$("#uploadImgForm"+objhid).ajaxSubmit({

success: function (html, status) {

html = html.replace("

", "").replace("
", "");

$("#imgid"+objhid).attr('src', "${pageContext.request.contextPath}"+html);

}

});

$("#imgInput"+objhid).val("");

return false;

});

});

3.action代码:

/**

* jquery.form.js异步上传图片(多个图片)

* @param request

* @param response

* @return

*/

@RequestMapping(value = "ajaximg", method = RequestMethod.POST)

public String ajaxGoodsImg(MultipartHttpServletRequest request,

HttpServletResponse response) {

PrintWriter out = null;

try {

response.setContentType("text/plain;charset=UTF-8");

// 以下两句为取消在本地的缓存

out = response.getWriter();

MultipartFile p_w_picpathfile = request.getFile("photo");

HttpSession session = request.getSession();

String flag = null;

if (null != p_w_picpathfile && 0 != p_w_picpathfile.getSize()) {

byte[] b = p_w_picpathfile.getBytes();

InputStream input = p_w_picpathfile.getInputStream();

String fileNameLong = p_w_picpathfile.getOriginalFilename();

FileUploadThread uploadthread = new FileUploadThread(session.getServletContext().getRealPath(""),

fileNameLong,input,b);

uploadthread.start();uploadthread.join();flag = uploadthread.getReturnStr();

if (flag == "false") {out.print("falsemsg");} else { out.print(flag);  } }

} catch (Exception e) {e.printStackTrace();} finally {if (out != null) {  out.close(); }} return null;}

4.多线程上传工具类:

import java.awt.p_w_picpath.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.Serializable;

import java.text.SimpleDateFormat;

import java.util.Date;import javax.p_w_picpathio.ImageIO;

/**

* 多线程 图片上传功能

*/

public class FileUploadThread extends Thread implements Serializable{ private static final long serialVersionUID = 7383841520335606068L;

private String fileRealPath;

private String fileNameLong;

private InputStream input;

private byte[] b;

String returnStr;

public FileUploadThread(String fileRealPath, String fileNameLong, InputStream input, byte[] b) {

this.fileRealPath=fileRealPath;

this.fileNameLong=fileNameLong;

this.input=input;

this.b=b;

}public String getFileRealPath() {

return fileRealPath;

}public void setFileRealPath(String fileRealPath) {

this.fileRealPath = fileRealPath;

} public String getReturnStr() {

return returnStr;

} public void setReturnStr(String returnStr) {

this.returnStr = returnStr;

}public String getFileNameLong() {

return fileNameLong;

}public void setFileNameLong(String fileNameLong) {

this.fileNameLong = fileNameLong;

}

public InputStream getInput() {

return input;

}public void setInput(InputStream input) {

this.input = input;

} public byte[] getB() {

return b;

}public void setB(byte[] b) {

this.b = b;

} public synchronized  void run() {

// 获取上传的文件名称

// String fileNameLong = uploadFile.getOriginalFilename();

// 获取文件扩展名

String extensionName = fileNameLong.substring(fileNameLong .lastIndexOf(".") + 1);

if (!extensionName.equals("jpg")) {

if (!extensionName.equals("gif")) {

if (!extensionName.equals("png")) {

this.returnStr="false";  }} }

String baseDir = "/goods/";

String fileFolder = new SimpleDateFormat("yyyyMMdd").format(new Date());

/* 文件存储的相对路径 */

String saveDirPath = baseDir + fileFolder + "/";

/* 文件存储在容器中的绝对路径 */

// String saveFilePath

String saveFilePath = fileRealPath + saveDirPath;

/*System.out.println(saveFilePath);*/

/* 构建文件目录以及目录文件 */

File fileDir = new File(saveFilePath);if (!fileDir.exists()) { fileDir.mkdirs();}

/* 重命名文件 */

String filename = Digest.dateFormatString(new Date()).replaceAll(" ", "").replaceAll(":", "");

try {

FileOutputStream out = new FileOutputStream(saveFilePath + filename

+ "." + extensionName);

out.write(b); // 写入文件

out.close();

BufferedImage p_w_picpath = ImageIO.read(input);

ImageIO.write(ResizeImage.resizeImage(p_w_picpath, 100, 100), "jpg",

new File(saveFilePath + filename + "_small." + extensionName));

} catch (Exception e) { e.printStackTrace(); }returnStr=saveDirPath + filename + "_small." + extensionName; }}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值