springmvc+dwz+xheditor實現上傳圖片及swf 視頻

注意:如果使用了apache fileupload上傳方法,則springmvc-servlet.xml的配置文件裏不能再有multipartResolver的配置,兩者不能共存。


1前臺JSP代碼


$(document).ready(function(){
//初始化在線編輯器
//設置在線編輯器上傳各類文件對應的url
$("#newGJFrom #gjnr").xheditor({
upLinkUrl:'${ctx}/fileupload/doXheditorUpload?flag=zip',
upLinkExt:'zip,rar,txt',
upImgUrl:'${ctx}/fileupload/doXheditorUpload?flag=img',
upImgExt:'jpg,jpeg,gif,png',
upFlashUrl:'${ctx}/fileupload/doXheditorUpload?flag=swf',
upFlashExt:'swf',
tools: 'Cut,Copy,Paste,Pastetext,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,Align,List,Outdent,Indent,Link,Unlink,Img,Flash,Table,Source,Preview,Print,Fullscreen',
skin: 'vista'
});
//刪除編輯器的 關於圖標
$("span a[name='About']").remove();


});


//其他代碼省略
<tr>
<td colspan="3">
<form:textarea name="gjnr" path="gjnr" id="gjnr" rows="20" cols="83"/>
</td>
</tr>



[color=red]兼容IE6,在線編輯器需要用如下的方法去寫:[/color]
<textarea class="editor" name="gjnr" id="gjnr" name="description" rows="20" cols="83"
tools="Cut,Copy,Paste,Pastetext,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,Align,List,Outdent,Indent,Link,Unlink,Img,Flash,Table,Source,Preview,Print,Fullscreen"
upLinkUrl="${ctx}/fileupload/doXheditorUpload?flag=zip" upLinkExt="zip,rar,txt,doc,docx"
upImgUrl="${ctx}/fileupload/doXheditorUpload?flag=img" upImgExt="jpg,jpeg,gif,png"
upFlashUrl="${ctx}/fileupload/doXheditorUpload?flag=swf" upFlashExt="swf"
skin="vista"></textarea>


2後臺controller 處理xheditor的文件上傳 也是利用apache的fileupload組件實現




import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javacommon.base.BaseQuery;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/fileupload")
public class FileUploadController {


/**
* 在線編輯器 上傳單個本地圖片 處理類
*/
@RequestMapping("/doXheditorUpload")
public void doImgUpload(ModelMap model, BaseQuery query,HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
String err = "";
//用於顯示在在線編輯器裏,圖片的路徑
String newFileName = "";
//允許的圖片格式
String fileExt = "";
String flag = request.getParameter("flag");
long maxSize = 0;
if("swf".equals(flag)){
fileExt = "swf";
maxSize = 1024*1024*10;
}
if("img".equals(flag)){
fileExt = "jpg,jpeg,bmp,gif,png";
maxSize = 1024*1024;
}
if("media".equals(flag)){
fileExt = "wmv,avi,wma,mp3,mid";
maxSize = 1024*1024*10;
}
if("zip".equals(flag)){
fileExt = "zip,rar,txt";
maxSize = 1024*1024*10;
}
try {
List<FileItem> items = upload.parseRequest(request);
Map<String, Serializable> fields = new HashMap<String, Serializable>();
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField())
fields.put(item.getFieldName(), item.getString());
else
fields.put(item.getFieldName(), item);
}
String folder=request.getSession().getServletContext().getRealPath("");
String savePath = folder+File.separator+"xheditorUpload"+File.separator;
File f1 = new File(savePath);
System.out.println("---上傳保存的目錄:"+savePath);
if (!f1.exists()) {
f1.mkdirs();
}
/*獲取表單的上傳文件*/
FileItem uploadFile = (FileItem)fields.get("filedata");
/*獲取文件上傳路徑名稱*/
String fileNameLong = uploadFile.getName();
/*獲取文件擴展名*/
/*索引加1的效果是隻取xxx.jpg的jpg*/
String extensionName = fileNameLong.substring(fileNameLong.lastIndexOf(".") + 1);
//System.out.println("extensionName:" + extensionName);
/*檢查文件類型*/
if (("," + fileExt.toLowerCase() + ",").indexOf("," + extensionName.toLowerCase() + ",") < 0){
printInfo(response, "不允許上傳此類型的文件", "");
return;
}
/*文件是否爲空*/
if (uploadFile.getSize() == 0){
printInfo(response, "上傳文件不能爲空", "");
return;
}
/*檢查文件大小*/
if (uploadFile.getSize() > maxSize){
printInfo(response, "上傳文件的大小超出限制,最大不能超過"+maxSize+"M", "");
return;
}
/*文件存儲的相對路徑*/
String saveDirPath = "/xheditorUpload/";
/*文件存儲在容器中的絕對路徑*/
String saveFilePath = request.getSession().getServletContext().getRealPath("") + saveDirPath;
/*構建文件目錄以及目錄文件*/
File fileDir = new File(saveFilePath);
if (!fileDir.exists()) {fileDir.mkdirs();}
/*重命名文件*/
String filename = UUID.randomUUID().toString();
File savefile = new File(saveFilePath + filename + "." + extensionName);
/*存儲上傳文件*/
uploadFile.write(savefile);
//這個地方根據項目的不一樣,需要做一些特別的定製。
newFileName = "/bmxxfb"+saveDirPath + filename + "." + extensionName;
} catch (Exception ex) {
System.out.println(ex.getMessage());
newFileName = "";
err = "錯誤: " + ex.getMessage();
}
printInfo(response, err, newFileName);
}

/**
* 使用I/O流輸出 json格式的數據
* @param response
* @param err
* @param newFileName
* @throws IOException
*/
public void printInfo(HttpServletResponse response, String err, String newFileName) throws IOException {
PrintWriter out = response.getWriter();
//String filename = newFileName.substring(newFileName.lastIndexOf("/") + 1);
out.println("{\"err\":\"" + err + "\",\"msg\":\"" + newFileName + "\"}");
out.flush();
out.close();
}
public static String getParameterByName(Iterator<FileItem> it,String key){
Iterator i = it;
String res="";
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
//System.out.println(fi.getFieldName()+":"+fi.getString());
if (fi.getFieldName().equals(key)) {
res = fi.getString();
break;
}
}
return res;
}
}



下面是xheditor的截圖:

[img]http://dl.iteye.com/upload/attachment/559246/50dfa407-ad1d-37a0-89a0-fc75f85d022d.jpg[/img]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章