本文實例為大家分享了java實現文件上傳的具體代碼,具體內容如下
1 java::
com.github.reston.servlet;導入java.io.file; import java.io.fileOutputstream; import java.io.io.ioexception; import java.io.printwriter; import java java.util.itel.itel.terrator; import java.util.list; import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.httpservletresponse; import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileItemFactory;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.io.ioutils; @webservlet(“/ajaxupload”)public類ajaxupload擴展了httpservlet {@override public void init(servletConfig config)拋出servletException {// todo auto-nato auto-generated auto-generated auto-generated方法stub suble suble.init(config); } @Override受保護的void Service(httpservletrequest請求,httpservletresponse響應)拋出ServletException,ioexception {wendment.setContentType(“ text/html”); request.setCharacterEncoding(“ UTF-8”); boolean ismultipart = servletfileupload.ismultipartcontent(請求);字符串basepath = getservletContext()。 getRealPath(“/upload”); File daseRectory = new File(basepath);字符串文件名=“”;長啟動= 0; if(!spedieRectory.isdirectory())laseectory.mkdirs();如果(ismultipart){嘗試{fileItemFactory Factory = new DiskFileItemFactory(); ServletFileUpload上傳=新的ServletFileUpload(工廠); @suppresswarnings(“ UNACKECT”)list <FileItem> fileItems = upload.parserequest(request); for(fileItem i:fileItems){if(i.isformfield()){字符串name = i.getFieldName();字符串值= i.getString(); if(name.equals(“ start”))start = long.parselong(i.getString()); }} for(fileItem item:fileItems){if(item.isformfield())繼續; filename = item.getFieldName(); if(mkdir(basepath)){file fileonserver = createfile(basepath,filename); if(fileonServer.length()== 0){fileOutputStream fos = new fileOutputStream(fileonServer,true); ioutils.copy(item.getInputStream(),fos); } if(start> 0){fileOutputStream fos = new fileOutputStream(fileonServer,true); ioutils.copy(item.getInputStream(),fos); } printWriter pw = response.getWriter(); pw.write(“ {/” length/“”:/“”+fileonserver.length()+“/“}”); pw.flush(); }}}} catch(異常E){}}} private file createfile(字符串路徑,字符串名稱)拋出ioexception {file tmp = new file(path,name);如果(! tmp.exists()){tmp.createnewfile(); }返回TMP; } private boolean mkdir(string path){boolean result = true;文件tmp =新文件(path);如果(!tmp.isdirectory()){結果= tmp.mkdirs(); }返回結果; }}}2,java::
var ajaxupload = function(e){ / ** * e url方法數據成功錯誤 * / var xmlhttprequest; if(window.xmlhttprequest){xmlhttprequest = new xmlhttprequest(); if(xmlhttprequest.overridemeType){xmlhttprequest.overridememetype(“ text/xml”); }}} else if(window.activexobject){var activename = [“ msxml2.xmlhttp”,“ microsoft.xmlhttp”]; for(var i = 0; i <activename.length; i ++){try {xmlhttprequest = new ActiveXobject(activename [i]);休息; } catch(e){return; }}} if(xmlhttprequest == undefined || xmlhttprequest == null){arter(“ xmlhttprequest 對象創建失敗!!”);返回; } else {this.xmlhttp = xmlhttprequest; } var file = document.getElementById(e.id); if(this.xmlhttp!= undefined && this.xmlhttp!= null){e.method = e.method.touppercase(); if(e.Method!=“ get” && e.method!=“ post”){alert(“ http的請求方法必須為get或post !!!”);返回; } if(e.url == null || e.url == undefined){e.Alert(“ http 的請求地址必須設置!”);返回; }} this.xmlhttp.onreadyStateChange = function(){if(this.dreadystate == 4){if(this.status == 200){var ponsepteText = this.responseText; var Responsexml = this.reponsexml; if(e.success == undectined || e.success == null){alert(“沒有設置處理數據正確返回的方法”);警報(“返回的數據:” + ponsponseText); } else {e.Success(ponsponseText,responsexml); }} else {if(e.Error == undefined || e.error == null){alert(“ 沒有設置處理數據返回失敗的處理方法! ”);警報(“ http的響應碼:“ + this.status +”,響應碼的文本信息:“ + this.statustext); } else {e.Error(this.status,this.statustext); }}}} // var formhtm =“ <form id ='output'enctype ='multipart/form-data'> </form>”; var filename = getFilename(e.id); this.xmlhttp.open(e.method,e.url,true); var data = new FormData(document.getElementById(“ output”)); data.append(“名稱”,文件名); data.append(“ start”,e.data.start); data.append(fileName,document.getElementById(e.id).files [0] .slice(e.data.start,getFilesize(e.id))); this.xmlhttp.send(data);}函數getfileName(id){var path = document.getElementById(id).value var pos1 = path.lastIndexof('/'/'); var pos2 = path.lastIndexof('//'); var pos = math.max(pos1,pos2); return path.substring(pos + 1);}函數getfilesize(id){return document.getElementById(id).files [0] .size;}3 html::
<! doctype html> <html> <head> <meta http-equiv =“ content-type” content =“ text/html; charset = utf-8”> <script type =“ text/javascript” text/javascript“ src =“ src =” src =“ test.js”> value =“上傳”/> <span>請選擇要上傳的文件(小於1G)</span> <input type =“ button” value =“上傳” onclick =“ test();”/> <form id =“輸出” enctype =“ multipart/form-data/form> </form> </form> </form> </form> </form> </form> </form <script> <script>函數test() “/pcc/reston/ajaxupload”,方法:“ post”,數據:{start:0},成功:函數(e){var l = json.parse(e).length; ajaxupload; ajaxupload; },錯誤:函數(e){console.log(e);};}; } </script> </body> </html>以上就是本文的全部內容,Java程序設計有所幫助。