外掛程式:ajaxfileupload.js
jsp:
1、引入該js
2、寫一個input。例如<input type="file" id="id_file" name="file">
3、寫上傳的js
<script type="text/javascript">
function ajaxFileUpload() {
var obj_file = document.getElementById("id_file");
var filesize = 0;
fileSize = obj_file.files[0].size;
if(fileSize>512000){
alert("圖片不能超過500kb!");
$("#id_file").val="";
}else{
$.ajaxFileUpload({
url :'<%=basePath%>sjtp/tempimg.do',
//用於檔案上傳的伺服器端請求地址
secureuri : false, //一般設定為false
fileElementId : 'id_file', //檔案上傳空間的id屬性 <input type="file" id="id_file" name="file" />
type : 'post',
dataType : 'HTML', //傳回值類型 一般設定為json
success : function(data, status) //伺服器成功響應處理函數
{
//這裡每個人商務邏輯不一樣,就不做執行個體了.
},
error : function(data, status, e)//伺服器響應失敗處理函數
{
alert(e);
}
})
return false;
}
}
</script>
頁面上傳js完成,現在是後台
說下我的後台部分業務,每天上傳的圖片都是存在當天的檔案夾裡的。比如今天2016年4月23日,那麼圖片存放的檔案夾就是20160423的。
後台代碼:
package com.oceansoft.swl.controller;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/**
* 圖片上傳
* @author LL
*
* 2015-7-24下午3:09:27
*/
@Controller
@RequestMapping("sjSptp")
public class SjTpscController {
@RequestMapping("/sptp.do")
public void addCategory(HttpServletRequest request, String path1,
String path2, HttpServletResponse actioncontext) {
//擷取當前年月日
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateNowStr = sdf.format(d);
//System.out.println("添加圖片");
String re=null;
String sub=null;
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile imgFile1 = multipartRequest.getFile("filesptp");// 擷取上次檔案名稱
MultipartFile imgFile2 = multipartRequest.getFile("file");
//System.out.println("----->" + imgFile1.getOriginalFilename());
List<String> fileTypes = new ArrayList<String>();
fileTypes.add("jpg");
fileTypes.add("jpeg");
fileTypes.add("bmp");
fileTypes.add("gif");
fileTypes.add("png");
fileTypes.add("gif");
//String sssssString = imgFile1.getOriginalFilename();
//System.out.println(sssssString);
if(null != imgFile1){
if (!(imgFile1.getOriginalFilename() == null || "".equals(imgFile1
.getOriginalFilename()))) {
// String uploadfile = request.getServletContext().getRealPath("upload");
String uploadfile = request.getSession().getServletContext().getRealPath("/")
+"upload"+"\\";
//System.out.println("--->" + path1 + "--->" + path2);
//System.out.println("上傳路徑---->" + uploadfile);
// File file1 = this.getFile(imgFile1, path2, path1, fileTypes);
String path = uploadfile + "/"+dateNowStr;
File targetFile = new File(path);
if(!targetFile.exists()){
targetFile.mkdirs();
}
File file1 = this.getFile(imgFile1, path, fileTypes);
//System.out.println("完成上傳------>" + file1);
re=file1.toString();
//int i=re.lastIndexOf("\\");
sub=re.substring(re.lastIndexOf("\\")+1);
//System.out.println("截取--->"+sub);
String tpbt = path + sub ;
//判斷檔案是否存在 標題圖片
File targetFileTwo = new File(tpbt);
if(!targetFileTwo.exists()){
targetFile.mkdirs();
}
//hdzx.setTpbt(tpbt);
//request.getSession().setAttribute("sss", dateNowStr);
//request.getSession().setAttribute("fileName", imgFile1);
}
actioncontext.setContentType("text/html");
PrintWriter out;
try {
out = actioncontext.getWriter();
out.println("upload/"+dateNowStr+"/" + sub);
//out.flush();
//out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// private File getFile(MultipartFile imgFile, String typeName,
private File getFile(MultipartFile imgFile, String brandName, List fileTypes) {
String fileName = imgFile.getOriginalFilename();
// 擷取上傳檔案類型的副檔名,先得到.的位置,再截取從.的下一個位置到檔案的最後,最後得到副檔名
String ext = fileName.substring(fileName.lastIndexOf(".") + 1,
fileName.length());
//System.out.println("擷取副檔名---->" + ext);
// 對副檔名進行小寫轉換
ext = ext.toLowerCase();
File file = null;
if (fileTypes.contains(ext)) { // 如果副檔名屬於允許上傳的類型,則建立檔案
// file = this.creatFolder(typeName, brandName, fileName);
file = this.creatFolder(brandName, fileName);
//System.out.println("完整路徑--->" + file);
try {
imgFile.transferTo(file); // 儲存上傳的檔案
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
// private File creatFolder(String typeName, String brandName, String
// fileName) {
private File creatFolder(String brandName, String fileName) {
File file = null;
// typeName = typeName.replaceAll("/", ""); // 去掉"/"
// typeName = typeName.replaceAll(" ", ""); // 替換半形空格
// typeName = typeName.replaceAll(" ", ""); // 替換全形空格
// brandName = brandName.replaceAll("/", ""); // 去掉"/"
// brandName = brandName.replaceAll(" ", ""); // 替換半形空格
// brandName = brandName.replaceAll(" ", ""); // 替換全形空格
// File firstFolder = new File("c:/" + typeName); // 一級檔案夾
File firstFolder = new File(brandName);
//System.out.println("檔案路徑--->" + firstFolder);
String suffix = fileName.substring(fileName.lastIndexOf('.'));
//System.out.println("截取檔案尾碼--->" + suffix);
String prefix = System.currentTimeMillis() + "";
String newfileName = prefix + suffix;
if (firstFolder.exists()) { // 如果一級檔案夾存在,則檢測二級檔案夾
// File secondFolder = new File(firstFolder, brandName);
// if (secondFolder.exists()) { // 如果二級檔案夾也存在,則建立檔案
// file = new File(secondFolder, fileName);
// } else { // 如果二級檔案夾不存在,則建立二級檔案夾
// secondFolder.mkdir();
// file = new File(secondFolder, fileName); // 建立完二級檔案夾後,再合建檔案
// file = new File(fileName);
//System.out.println("現在路徑---->" + brandName);
file = new File(brandName + "\\" + newfileName);
// }
} else { // 如果一級不存在,則建立一級檔案夾
firstFolder.mkdirs();
// File secondFolder = new File(brandName);
// if (secondFolder.exists()) { // 如果二級檔案夾也存在,則建立檔案
// file = new File(secondFolder, fileName);
// } else { // 如果二級檔案夾不存在,則建立二級檔案夾
// secondFolder.mkdir();
// file = new File(secondFolder, fileName);
//System.out.println("現在路徑---->" + brandName);
file = new File(brandName + "\\" + newfileName);
// }
}
return file;
}
}
ok。結束
http://download.csdn.net/detail/leilei19920808/9500342 外掛程式下載地址。