import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import baojia.util.Constants;
import baojia.util.SftpClientUtil;
import baojia.util.WebUtils;
import com.google.gson.Gson;
public class UploadUtil {
public void UploadDocument(HttpServletRequest request,
HttpServletResponse response, String msgName, String hiddenname) throws Exception {
String imagePath = Constants.DataStatus.imagePath;
Gson gson = new Gson();
// 保存合同对象
String fileName = "";
String myFileName = "";
File lFile=null;
Boolean flag=false;
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 判断 request 是否有文件上传,即多部分请求
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 记录上传过程起始时的时间,用来计算上传时间
int pre = (int) System.currentTimeMillis();
// 取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
//File tempFile = File.createTempFile("temp", ".jpg");
//file.transferTo(tempFile);
if (file != null) {
// 取得当前上传文件的文件名称
myFileName = file.getOriginalFilename();
// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
if (myFileName.trim() != "") {
// 重命名上传后的文件名
fileName = UUID.randomUUID()
+ file.getOriginalFilename().substring(file.getOriginalFilename().indexOf(".")) ;
// 定义上传路径
String path = request.getSession().getServletContext()
.getRealPath("")
+ "/upload/" + fileName;
//File localFile = new File(path);
//File localFile = new File(file1.getAbsolutePath());
System.out.println(path);
try {
// file.transferTo(localFile);
//
// CommonsMultipartFile uploadImage=(CommonsMultipartFile) file;
// uploadImage.getFileItem().write(localFile);
lFile = new File(imagePath+fileName);
FileOutputStream fos = new FileOutputStream(lFile);
fos.write(file.getBytes());
fos.flush();
fos.close();
lFile=new File(imagePath+fileName);
SftpClientUtil clientUtil=new SftpClientUtil();
flag=true;
try {
clientUtil.connect();
clientUtil.upload(fileName);
clientUtil.disconnect();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
flag=false;
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag=false;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// finally{
// if(flag&&lFile.exists()&&lFile.isFile()){
// System.gc();
// if(lFile.delete()){
// System.out.println("--------------------------------------------删除服务器本地文件成功");
// }else{
// System.out.println("--------------------------------------------删除服务器本地文件失败");
// }
// }
//
// }
}
}
// 记录上传该文件后的时间
int finaltime = (int) System.currentTimeMillis();
System.out.println(finaltime - pre);
}
}
try {
HashMap<String ,String> hashmap=new HashMap<String, String>();
hashmap.put("fileName", fileName);
hashmap.put("msgName", msgName);
hashmap.put("hiddenname", hiddenname);
String string=gson.toJson(hashmap);
System.out.println(string);
WebUtils.writeMsg(response, string);
} catch (IOException e) {
e.printStackTrace();
}
}
}