本文实例为大家分享了java实现文件上传的具体代码、具体内容如下
1 、java代码:
パッケージcom.github.reston.servlet; Import java.io.file; import java.io.fileoutputStream; Import java.io.ioexception; Import java.io.io.printwriter; Import java.util.iterator; Import java.util.list; javax.servlet.servletconfig; Import javax.servlet.servletexception; Import javax.servlet.annotation.websert; Import javax.servlet.httpservlet; import javax.servlet.http.htpptpretest; 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 class ajaxuploadはhttpservlet {@override public void init(servletconfig config)servletexception {// todo auto-enerated method stub.init(config); } @Override Protected void Service(httpservletrequest request、httpservletResponse Response)servletexception、ioexception {respons.setContentType( "text/html"); request.setcharacterencoding( "utf-8"); boolean ismultipart = servletfileupload.ismultipartcontent(request); string basepath = getServletContext()。getRealPath( "/upload"); file basedirectory = new file(basepath);文字列filename = ""; long start = 0; if(!beadirectory.isdirectory())beadirectory.mkdirs(); if(ismultipart){try {fileItemFactory Factory = new DiskFileItemFactory(); servletfileupload upload = new servletfileupload(Factory); @suppresswarnings( "unchecked")list <fileitem> fileitems = upload.parserequest(request); for(fileItem i:fileitems){if(i.isformfield()){string name = i.getFieldName();文字列値= i.getString(); if(name.equals( "start"))start = long.parselong(i.getString()); }} for(fileItem item:fileItems){if(item.isform())継続; 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 = respons.getWriter(); pw.write( "{/" length/":/" "+fileonserver.length()+"/"}"); pw.flush(); }}} catch(Exception e){}}} private file createfile(string path、string name)throws ioexception {file tmp = new file(path、name); if(!tmp.exists()){tmp.createNewfile(); } tmpを返します。 } private boolean mkdir(string path){boolean result = true;ファイルtmp = new file(path); if(!tmp.isdirectory()){result = tmp.mkdirs(); } return result; }}2 、Java代码:
var ajaxupload = function(e){ / ** * e urlメソッドデータ成功エラー * / var xmlhttprequest; if(window.xmlhttprequest){xmlhttprequest = new xmlhttprequest(); if(xmlhttprequest.overridemimeType){xmlhttprequest.overridemimeType( "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){alert( "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.readystate == 4){if(this.status == 200){var responsetext = this.responsetext; var responsexml = this.reponsexml; if(e.success == undefined || e.success == null){alert( "没有设置处理数据正确返回的方法"); alert( "返回的数据:" + responsetext); } else {e.success(responsetext、responsexml); }} else {if(e.error == undefined || e.error == null){alert( "没有设置处理数据返回失败的处理方法!"); 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( "name"、filename); 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);} function 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);} function getFilesize(id){return document.getElementById(id).files [0] .size;}3 、HTML代码:
< value = "上传"/> <span>请选择要上传的文件(小于1g)</span> <入力タイプ= "button" value = "上传" onclick = "test();"/> <form id = "output" enctype = "multipart/form-data"> </form> <スクリプト> function> function> function> 「/PCC/RESTON/AJAXUPLOAD」、メソッド:「POST」、DATA:{start:0}、function(e){var l = json.parse(e).length: "upload"、url: "/pcc/reton/ajaxupload"、 "{e"、 "" "post" }、function(e){console.log(e)}}; } </script> </body> </html>以上就是本文的全部内容、希望对大家学习java程序设计有所帮助。