近年來(lái),隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,文件上傳逐漸成為了許多網(wǎng)站必備的功能之一。要實(shí)現(xiàn)文件上傳功能,并不是一件容易的事情,但是借助于一些優(yōu)秀的技術(shù)框架,我們可以輕松實(shí)現(xiàn)這一功能,其中jQuery與Java的搭配成為了越來(lái)越流行的選擇。
對(duì)于前端開發(fā)來(lái)說(shuō),jQuery囊括了大量強(qiáng)大的選擇器和API,使得頁(yè)面交互變得更加簡(jiǎn)單,在文件上傳這一方面也不例外。下面是一個(gè)簡(jiǎn)單的jQuery代碼實(shí)現(xiàn)文件上傳的DEMO:
$.ajax({ url: 'xxx', type: 'POST', data: new FormData($('#uploadForm')[0]), cache: false, processData: false, contentType: false, success: function(data) { console.log(data); }, error: function(err) { console.log(err.responseText); }, });
值得注意的是,這個(gè)代碼塊中傳的參數(shù)就是上傳表單數(shù)據(jù),其中FormData就是一個(gè)專門用于表單數(shù)據(jù)封裝和傳輸?shù)念?,這個(gè)類提供了許多方便的方法來(lái)處理表單數(shù)據(jù),尤其是在文件上傳這一方面,更是提供了簡(jiǎn)潔的方式。
而對(duì)于后端開發(fā)來(lái)說(shuō),Java可以說(shuō)是一種不二之選。Apache的文件上傳組件——commons-fileupload,一直被作為開發(fā)這一功能的經(jīng)典之作。下面就是使用commons-fileupload實(shí)現(xiàn)文件上傳的Java代碼:
DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); Listitems = upload.parseRequest(request); for(FileItem item : items) { if(!item.isFormField()) { String fileName = item.getName(); File file = new File(uploadPath + fileName); item.write(file); } }
這個(gè)代碼塊中,首先我們通過(guò)DiskFileItemFactory來(lái)創(chuàng)建一個(gè)文件存儲(chǔ)的目錄,然后使用ServletFileUpload來(lái)解析整個(gè)請(qǐng)求,最后就可以輕松上傳文件了。
至此,我們就可以輕松搭建起一個(gè)文件上傳的系統(tǒng)了,當(dāng)然這僅僅是一個(gè)簡(jiǎn)單的DEMO,具體實(shí)現(xiàn)還需要考慮文件上傳類型、文件大小、安全性等因素,但基本框架已經(jīng)搭建好了,前后端配合,文件上傳就變得輕而易舉。