http requests
を使用してファイルをhttpサーバーにアップロードしながら、追加のパラメーター、java.net.urlconnection、およびmultipart/dataエンコーディングを送信します。プロセスの内訳は次のとおりです。エンコーディングには、要求本体を複数の部分に分割します。それぞれに境界文字列が付いています。 java.io.outputStreamをインポートします。 java.io.printwriterをインポートします。 java.net.urlconnectionをインポートします。 java.nio.charset.standardcharsetsをインポートします。 java.nio.file.filesをインポートします。 java.nio.file.pathsをインポートします。 public class fileupload { public static void main(string [] args)スロー例外{ string url = "http://example.com/upload"; 文字列param = "value"; file textfile = new file( "/path/to/file.txt"); ファイルbinaryfile = new file( "/path/to/file.bin"); 文字列境界= long.tohexstring(system.currenttimemillis()); urlconnection connection = new url(url).openconnection(); connection.setDoOutput(true); connection.setRequestProperty( "content-type"、 "multipart/form-data; boundary =" boundary); try(outputstream output = connection.getOutputStream(); printwriter writer = new Printwriter(new outputStreamWriter(output、StandardCharsets.utf_8)、true)){ //パラメーターを送信します writer.append( " - " boundary).append( "\ r \ n"); writer.append( "content-disposition:form-data; name = \" param \ "")。append( "\ r \ n"); writer.append( "content-type:text/plain; charset =" stardandcharsets.utf_8).append( "\ r \ n"); writer.append( "\ r \ n")。append(param).append( "\ r \ n")。flush(); //テキストファイルを送信します writer.append( " - " boundary).append( "\ r \ n"); writer.append( "content-disposition:form-data; name = \" textfile \ "; filename = \" "textfile.getName()" \ "")。append( "\ r \ n"); writer.append( "content-type:text/plain; charset =" stardandcharsets.utf_8).append( "\ r \ n"); writer.append( "\ r \ n")。flush(); files.copy(textfile.topath()、output); output.flush(); writer.append( "\ r \ n")。flush(); //バイナリファイルを送信します writer.append( " - " boundary).append( "\ r \ n"); writer.append( "content-disposition:form-data; name = \" binaryfile \ "; filename = \" "binaryfile.getname()" \ "")。append( "\ r \ n"); writer.append( "content-type:" urlconnection.guesscontenttypefromname(binaryfile.getname()))。append( "\ r \ n"); writer.append( "content-transfer-encoding:binary")。append( "\ r \ n"); writer.append( "\ r \ n")。flush(); files.copy(binaryfile.topath()、output); output.flush(); writer.append( "\ r \ n")。flush(); // MultiPart/Form-Dataの終わり writer.append( " - " boundary " - ")。append( "\ r \ n")。flush(); } int resspecode =((httpurlconnection)connection).getResponseCode(); System.out.println( "Response Code:" ResponseCode); } }
追加メモ
apache commons fileuploadは、アップロードされたファイルを処理するためにサーバー側でのみ必要です。 java.net.urlconnectionおよびmultipart/form-data(rfc2388)のドキュメントを参照してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3