基于HTML5+js+Java實(shí)現(xiàn)單文件文件上傳到服務(wù)器功能
上傳單文件到服務(wù)器
應(yīng)公司要求,在HTML5頁(yè)面上實(shí)現(xiàn)上傳文件到服務(wù)器,對(duì)于一個(gè)還沒(méi)畢業(yè)的實(shí)習(xí)生菜鳥(niǎo)來(lái)說(shuō),這可不得了-----不會(huì),網(wǎng)上各種百度,找各種博客還是沒(méi)解決,最后還是請(qǐng)教了公司的大神,人家給卸了一個(gè)例子,然后根據(jù)人家寫(xiě)的終于把這個(gè)上傳文件搞定。
好了,開(kāi)始上代碼。
HTML5代碼:
<form name="upform" action="" method="POST">
<input type ="file" name="myfile1" id="myfile1"/><br/>
<input type ="file" name="myfile2" id="myfile2"/><br/>
備注:<input type="text" name="mydata" id="mydata"/><br/>
<input type="button" value="確定" onclick="upload()"/><br/>
</form>
js代碼:
FormData可以把它理解成一個(gè)虛擬的表單對(duì)象,它只有一個(gè)方法append,我們可以通過(guò)append向FormData里面添加各種需要提交的數(shù)據(jù)。
url:/adata/adata/payment/PaymentAction/upload.menu----指的是你Java接受信息的action路徑
_pathName=/adata//payment.jsp-----------指的是你HTML5頁(yè)面的虛擬路徑。
alert(result);-------指的是從Java后臺(tái)返回的信息。
function upload() {
mydata = document.getElementById("mydata").files[0];
formData = new FormData();
formData.append("mydata", mydata);
$.ajax({
contentType:"multipart/form-data",
url:"/adata/adata/payment/PaymentAction/upload.menu?_pathName=/adata//payment.jsp",
type:"POST",
data:formData,
dataType:"text",
processData: false, // 告訴jQuery不要去處理發(fā)送的數(shù)據(jù)
contentType: false, // 告訴jQuery不要去設(shè)置Content-Type請(qǐng)求頭
success: function(result){
alert(result);
}
});
}
Java代碼:
String savePath = "d:/";//存儲(chǔ)路徑
String retMsg = "";//定義將返回給客戶端的信息
try {
if (ServletFileUpload.isMultipartContent(request)) {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (!item.isFormField()) {// 過(guò)濾掉表單中非文件域
String fileType = item.getName().substring(item.getName().lastIndexOf(".") + 1).toLowerCase();//文件類型
String fileName = new Date().getTime() + "." + fileType; //保存的文件名
String filePath = savePath + "\\" + fileName; //保存的文件路徑
BufferedInputStream in = new BufferedInputStream(item.getInputStream());// 獲得文件輸入流
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(filePath)));// 獲得文件輸出流
org.apache.commons.fileupload.util.Streams.copy(in, out, true);// 開(kāi)始把文件寫(xiě)到指定的上傳文件夾
retMsg += "上傳文件成功!";
in.close();
out.close();
}
}
}
response.setContentType("text/html;charset=utf8");
PrintWriter pw = response.getWriter();
pw.print(retMsg);
pw.flush();
pw.close();
//根據(jù)自己需要返回頁(yè)面一個(gè) retMsg
// return retMsg 證明上傳成功
} catch (Exception e) {
e.printStackTrace();
}
總結(jié)
以上所述是小編給大家介紹的基于HTML5+js+Java實(shí)現(xiàn)單文件文件上傳到服務(wù)器功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
- js 實(shí)現(xiàn) input type="file" 文件上傳示例代碼
- JS文件上傳神器bootstrap fileinput詳解
- 原生JS實(shí)現(xiàn)前端本地文件上傳
- 原生JS和jQuery版實(shí)現(xiàn)文件上傳功能
- 學(xué)習(xí)使用AngularJS文件上傳控件
- JS簡(jiǎn)單實(shí)現(xiàn)文件上傳實(shí)例代碼(無(wú)需插件)
- ajaxFileUpload.js插件支持多文件上傳的方法
- 分享5個(gè)好用的javascript文件上傳插件
- SpringBoot+Vue.js實(shí)現(xiàn)前后端分離的文件上傳功能
- 原生JS實(shí)現(xiàn)文件上傳
相關(guān)文章
詳解Java并發(fā)編程中的優(yōu)先級(jí)隊(duì)列PriorityBlockingQueue
PriorityBlockingQueue是Java中實(shí)現(xiàn)了堆數(shù)據(jù)結(jié)構(gòu)的線程安全的有界阻塞隊(duì)列。本文將會(huì)深入解讀PriorityBlockingQueue的源碼實(shí)現(xiàn),感興趣的可以了解一下2023-05-05
SpringBoot項(xiàng)目更換項(xiàng)目名稱的實(shí)現(xiàn)
本文主要介紹了SpringBoot項(xiàng)目更換項(xiàng)目名稱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06
Spring中的接口重試機(jī)制spring-retry之listeners參數(shù)解析
這篇文章主要介紹了Spring中的接口重試機(jī)制spring-retry之listeners參數(shù)解析,注解@Retryable有一個(gè)參數(shù)listeners沒(méi)有說(shuō)明,那么本篇文章我們?cè)敿?xì)介紹一個(gè)這個(gè)參數(shù)的用,需要的朋友可以參考下2024-01-01
在java8中使用流區(qū)分質(zhì)數(shù)與非質(zhì)數(shù)詳解
這篇文章主要介紹了在java8中使用流區(qū)分質(zhì)數(shù)與非質(zhì)數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
java存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)
下面小編就為大家?guī)?lái)一篇java存儲(chǔ)以及java對(duì)象創(chuàng)建的流程(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05

