HTTP経由でPOSTリクエストを受け取るHTTPサーバーを書きました。 ------------------javaでHTTPポスト経由でファイルを受け取っています:ファイルが壊れています
:すべての入力フォームでencriptedれるヘッダの後
POST/HTTP/1.1
Host: 192.168.7.4:5000
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------197987737412371961922053527775
Content-Length: 4306786
-----------------------------197987737412371961922053527775
Content-Disposition: form-data; name="filename"
poison.mp3
-----------------------------197987737412371961922053527775
Content-Disposition: form-data; name="prova"
provaV
-----------------------------197987737412371961922053527775
Content-Disposition: form-data; name="datafile"; filename="01-Poison.mp3"
Content-Type: audio/mpeg
file......
:特に、マルチパートフォームデータとして、要求を受信します----------- 197987737412371961922053527775 Conten_disposition ... \ rを\ n個の\ rをする\ nは "入力内容"
最後のものは、バイナリ形式のファイルが含まれています。
これは、ヘッダーに含まれているすべての情報を取得してから、ファイルを再構築しようとする私のサーバーです。 私のローカルマシンからリクエストを送信すると問題なく動作しますが、リモートクライアントからファイルを送信しようとするとファイルが破損します。 ソケットから直接開いた単純なInputStreamを使用しています。
private void payloadFileCreation(InputStream in,boolean t1, FileOutputStream fos, long filesize) throws IOException{
int dyn_data_index=0;
int chunk=2048;
byte[] dyn_data = new byte[chunk];
int av = in.available();
while (filesize>chunk){
in.read(dyn_data,0,chunk);
fos.write(dyn_data,0,chunk);
fos.flush();
filesize -= chunk;
}
in.read(dyn_data,0,(int) filesize);
fos.write(dyn_data,0, (int) filesize);
fos.flush();
fos.close();
}
任意のアイデア:
これは、送信されたファイルを作成しようとする方法ですか? ありがとう
腐敗の意味を説明してください。また、2つのマシンはバイトオーダー互換ですか? – g051051