私はそれほどナンセンスとは言いません、私はあなたにコードを投稿するだけです。特定のコードは次のとおりです。
HTMLコードは次のとおりです。
<Body> <入力ID = "FileId" Type = "file" accept = "video/*; capture = camera" onchange = "onfile(this)"> <input id = "btn" type = "button" value = "submit"> <script type = "text/javascript"> var xhr; function onfile(file){var fdata( "filet"; fd.; document.getElementById( 'fileId')。ファイル[0]); xhr = new xmlhttprequest(); xhr.open( "post"、 "http:// localhost:8889/testup/upservlet"); // xhr.setRequestheader( "content-type"、 "charset = utf-8"); xhr.send(fd); xhr.oneredstatechange = processResponse;} upprocssonsponse(){xhr. end data stream end "); if(xhr.status == 200){var infor = xhr.responsetext; alert(" server side response = "+infor);}}} </script> </body>Javaコードは次のようになります:
パッケージcom.yjm.up; import java.io.file; import java.io.fileoutputStream; Import java.io.ioexception; Import java.io.inputStream; Import java.util.list; Import javax.servlet.servletexception; Import javax.servlet.http.httpservlet; javax.servlet.http.httpservletrequest; import javax.servlet.httpservletresponse; Import org.apache.commons.fileupload.fileitem; Import org.apache.commons.fileupload.disk.diskfiletemfactory; org.apache.commons.fileupload.servlet.ServletFileUpload;public class UpServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Get the saved directory of the uploaded file, store the uploaded file in the WEB-INF directory, and does not allow direct access from the outside world to ensure the security of the uploaded file String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");File file = new File(savePath);System.out.println("test...");// Determine whether the saved directory of the uploaded file exists if (!file.exists() && !file.isDirectory()) {system.out.println(save + "ディレクトリは存在しない、作成する必要はありません") DiskFileItemFactory(); // 2。ファイルアップロードParser ServletFileupload upload = new ServletFileupload(Factory); //中国の文字盤upload.setheaderencoding( "utf-8"); // 3。送信されたデータがUpload formのデータであるかどうかを決定するかどうかを判断します。 {//従来の方法でデータを取得;} //4。ServletFileuploadパーサーを使用して、アップロードされたデータを解析します。解析結果は、リスト<fileitem>コレクションを返します。各fileItemは、フォームフォームリスト<fileitem> list = upload.parserequest(request)の入力項目に対応します。 for(fileitem item:list){//通常の入力アイテムのデータがfileitem if(item.isformfield()){string name = item.getfieldname(); //通常の入力項目のデータの中国語の文字列値= item.getString( "utf-8"); // value = new = new = new string(value.getBytes( "iso8859-1")、 "utf-8"); system.out.println(name + "=" + value);} else {//ファイルアイテムがアップロードされたファイルをカプセル化する場合//アップロードされたファイル名、文字列filename = item.getName(); filename.trim()。equals( "")){continue;} //注:異なるブラウザーによって送信されたファイル名は異なります。一部のブラウザは、以下:// c:/a/b/1.txtなどのパスを持つファイルを送信します。1.txt//は、取得したアップロードされたファイルのファイル名のパス部分を処理する単純なファイル名です。 in = item.getInputStream(); //ファイル出力ストリームFileOutputStream Out = new fileoutputStream(save + "//" + filename); //バッファバイトバッファー[] = new Byte [1024 * 1024]; // //バッファーバイトバッファー[] = NEW BYTEM [1024 * 1024]; fileoutputStream(SavePath + "//" + filename); //バッファーバイトバッファーを作成[] = new byte [1024 * 1024]; //入力ストリーム内のデータが読み取られているかどうかを判断する識別子は、バッファーに入力ストリームを読む(len = in.read(buffer))> 0は、(len = in.read(buffer))> 0){// fileoutputstream outputストリームを使用することを意味します。 in.close(); //出力ストリームを閉じますout.close(); //ファイルアップロードitem.delete()を処理するときに生成された一時ファイルを削除します。 message = "ファイルアップロードに正常に!"; ";}}} catch(exception e){message =" file upload failed! "; e.printstacktrace();} request.setattribute(" message "、message); request.getRequestDispatcher("/message.jsp ")。使用されるJavaパッケージは、1g以上アップロードされます
Commons-fileupload-1.2.1.jar
Commons-Io-1.3.2.jar
//xhr.setRequestheader("content-type"、 "application/octet-stream; charset = utf-8");これは追加できません