Java實現(xiàn)拖拽文件上傳dropzone.js的簡單使用示例代碼
Java實習(xí)生一枚,前端知識薄弱,最近因為工作需要,做了一個拖拽文件上傳的功能,發(fā)現(xiàn)dropzone.js挺不錯的,特地做個筆記。
dropzonejs 的官網(wǎng)是:http://www.dropzonejs.com/, 中文手冊是:http://wxb.github.io/dropzonejs.com.zh-CN/
自己寫的拖拽文件至一個按鈕上傳的功能,前端及java代碼如下:
jsp頁面:
1. 首先必須引入dropzone的js和css文件
<link rel="stylesheet" href="dropzone/css/dropzone.css" rel="external nofollow" > <script src="dropzone/js/dropzone.js"></script>
2.自己定義兩個div區(qū)域
<%--拖拽文件上傳 --%>
<div id="div1" class="dropz" style="width:0px; height:0px;">
uopload
</div>
<div id="div2" class="dropz" style=" background: white;border:none;float:left;">
</div>
這是我的文件上傳之后的文件隊列區(qū)域:
<div id="fileslist" style="padding: 10px;"></div>
3.對dropzone.css進(jìn)行修改,將文件內(nèi)的所有dropzone替換為dropz
修改文件拖拽區(qū)域的顯示樣式:
.dropz {/*設(shè)置拖拽上傳文件按鈕的格式*/
min-height:0px;
min-width: 100px;
border: 1px solid #58AF0C;
background: white;
padding: 15px 20px;
background-color: #7AC143;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #7AC143),
color-stop(1, #7AC143));
background-position: center top;
background-repeat: no-repeat;
border-radius: 5px;
min-height:0px;
min-width: 100px;
padding: 15px 20px;
color: #FFF;
font: bold 12px Arial, Helvetica, sans-serif;
text-align: center;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.dropz.dz-clickable {
cursor: pointer;
line-height: 0px;/*按鈕中的文字垂直居中*/
}
4.在jsp對div進(jìn)行dropzone參數(shù)的自定義
<script type="text/javascript">
$("#div1").dropzone({
url:"systemController.action?saveFile",//上傳文件的地址,
maxFiles:1,//最多上傳幾個文件
maxFilesize: 5,//文件的大小,單位是M
addRemoveLinks:true,//是否有刪除文件的功能
dictRemoveFile:"",//刪除文件
previewsContainer:"#div2",//文件上傳進(jìn)度顯示的區(qū)域
acceptedFiles: ".jpg,.jpeg,.png,.gif,.xls,.txt,.sql,.rar,.mkv",//支持的格式
paramName:'file',//上傳的FILE名稱,即服務(wù)端可以通過此來獲取上傳的文件,如$_FILES['dropimage']
init: function() {//初始化時的事件
//$("#uploadfile").uploadFile({success:function(data){
this.on("addedfile", function(file) {
// Create the remove button
var removeButton = Dropzone.createElement("<img src='plug-in/uploadify/img/uploadify-cancel.png' title='刪除'/>");
// Capture the Dropzone instance as closure.
var _this = this;
// Listen to the click event
removeButton.addEventListener("click", function(e) {
// Make sure the button click doesn't submit the form:
e.preventDefault();
e.stopPropagation();
alert("Are you sure to delete?");
// Remove the file preview.
_this.removeFile(file);
// If you want to the delete the file on the server as well,
// you can do the AJAX request here.
});
// Add the button to the file preview element.
file.previewElement.appendChild(removeButton);
});
this.on("success", function(file, data) {
if (this.getUploadingFiles().length === 0 && this.getQueuedFiles().length === 0) {
var d = $.parseJSON(data);
var fileitem = "<span class='uploadFile-queue-item' id='" + d.fileKey + "'><a>" + d.name
+ "</a><img border='0' style='padding:2px;cursor:pointer;' onclick=delAttachment('" + d.delurl + "','"
+ d.fileKey + "','" + d.name
+ "') title='刪除' src='plug-in/uploadify/img/uploadify-cancel.png' widht='15' height='15'> </span>";
$("#fileslist").html(fileitem);
$("#attachment").val(d.fileKey + "," + d.name + ";");
}
this.removeFile(file);
});
}
});
</script>
java后臺處理文件上傳的代碼:
@RequestMapping(params = "saveFile", method = RequestMethod.POST)
public void saveFile(HttpServletRequest request, HttpServletResponse response, TSDocument document) throws Exception{
Map<String, Object> attributes = new HashMap<String, Object>();
TSTypegroup tsTypegroup=systemService.getTypeGroup("fieltype","文檔分類");
TSType tsType = systemService.getType("files","附件", tsTypegroup);
String fileKey = oConvertUtils.getString(request.getParameter("fileKey"));// 文件ID
String documentTitle = oConvertUtils.getString(request.getParameter("documentTitle"),"uploadfile");// 文件標(biāo)題
if (StringUtil.isNotEmpty(fileKey)) {
document.setId(fileKey);
document = systemService.getEntity(TSDocument.class, fileKey);
document.setDocumentTitle(documentTitle);
}
document.setBusinessKey(request.getParameter("businessKey"));
document.setSubclassname(MyClassLoader.getPackPath(document));
document.setCreatedate(DateUtils.gettimestamp());
document.setTSType(tsType);
UploadFile uploadFile = new UploadFile(request, document);
uploadFile.setCusPath("files");
uploadFile.setSwfpath("swfpath");
document = systemService.uploadFile(uploadFile);
attributes.put("url", document.getRealpath());
attributes.put("fileKey", document.getId());
if (ResourceUtil.getSessionUserName()!=null) {
attributes.put("uploadUser", ResourceUtil.getSessionUserName().getUserName());
}else{
attributes.put("uploadUser", "null");
}
attributes.put("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
attributes.put("name", document.getAttachmenttitle()+"."+document.getExtend());
attributes.put("downloadurl", "commonController.action?viewFile&fileid="+ document.getId()+"&subclassname=");
attributes.put("viewhref", "commonController.action?objfileList&fileKey=" + document.getId());
attributes.put("delurl", "commonController.action?delObjFile&fileKey=" + document.getId());
attributes.put("realPath", document.getRealpath());
if(FileUtils.isPicture(document.getExtend())){
attributes.put("imgUrl", document.getRealpath());
}
JSONObject js = new JSONObject(attributes);
response.getWriter().write(js.toString());
response.getWriter().flush();
}
注意這里的返回值是直接返回的json對象,如果采用
@RequestMapping(params = "saveFiles", method = RequestMethod.POST) @ResponseBody
則會報錯:
[com.framework.core.common.exception.MyExceptionHandler]org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
最終實現(xiàn)的效果如下:

更多使用功能請參考dropzone的官方文檔。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot使用EMQX(MQTT協(xié)議)的實現(xiàn)
最近由于iot越來越火, 物聯(lián)網(wǎng)的需求越來越多, 那么理所當(dāng)然的使用mqtt的場景也就越來越多,本文主要介紹了springboot使用EMQX(MQTT協(xié)議)的實現(xiàn),感興趣的可以了解一下2023-10-10
mybatis中關(guān)于mapper的使用以及注意事項
這篇文章主要介紹了mybatis中關(guān)于mapper的使用以及注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
JAVA CountDownLatch(倒計時計數(shù)器)用法實例
這篇文章主要介紹了JAVA CountDownLatch(倒計時計數(shù)器)用法實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10
Spring?Data?Jpa?中原生查詢?REGEXP?的使用詳解
這篇文章主要介紹了Spring?Data?Jpa?中原生查詢?REGEXP?的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
java多線程Synchronized實現(xiàn)可見性原理解析
這篇文章主要介紹了java多線程Synchronized實現(xiàn)可見性原理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
Java中stream處理中map與flatMap的比較和使用案例
這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
springboot項目實現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter
這篇文章主要介紹了springboot項目實現(xiàn)多數(shù)據(jù)源配置使用dynamic-datasource-spring-boot-starter,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06

