- PR -

巨大ファイルのダウンロード/アップロードについて

投稿者投稿内容
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2004-12-27 21:02
削除します
galaxyRC
会議室デビュー日: 2004/12/27
投稿数: 10
投稿日時: 2004-12-27 21:08
どうもすみません。皆さんの返答ありがとうございました。

takamaroさん言った通り、僕は日本の会社で勤めている外国人です、日本語がまだまだ…
恥ずかしいだけど........自分の述べたものが悪かったと思います。失礼しました。

”「ファイルの全データをメモリに展開」部分を修正すべきでしょうね。 ”こういう部分
を修正できたら 一番いいと思います。


「そのファイルとは何?」「何処から持ってくるの?」:ファイルが任意のファイルですが
ローカルのファイルをサーバにアップロードしたいです(イントラネットで)。
僕は技術的に理解できないのほうです。

申し訳ございませんでした、もし良かったら、メールでもOKですが、
pj02-sys1@ysys.com.cnまでお願いします。

[ メッセージ編集済み 編集者: galaxyRC 編集日時 2004-12-27 21:35 ]

[ メッセージ編集済み 編集者: galaxyRC 編集日時 2004-12-27 21:45 ]
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-12-28 20:09
引用:

”「ファイルの全データをメモリに展開」部分を修正すべきでしょうね。 ”こういう部分
を修正できたら 一番いいと思います。


galaxyRCさんが最初に書いた「FileInputStreamを導入」でOKだと思います。
そこで得たバイト配列をそのまま、サーバへOutputStream(又は拡張したストリーム)
で送信すれば良いのではないでしょうか。

コード:

OutputStream server;
   ・
   ・
File file = new File(fileNmae);
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[1024];
while(fis.read(b) != -1) {
    server.write(b);
}


サーバ側との通信手段が分からない(HTTP? FTP? Socket?)ので大雑把なコード
になってますが、FileInputStreamから読み込んだバイトを即、サーバ側に投げる
という基本はどれでも変わらないと思います(実際にやってみた事は無いですが、、)
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-12-28 21:10
takamaroさんのコードは改善が必要です。

多くの場合、ファイルサイズが 1024の倍数とは限らない
ため、このままではファイルの後ろにゴミがついてしま
います。
読みこんだ長さ分だけ書きこむ様にして下さい。
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-12-28 22:59
引用:

このままではファイルの後ろにゴミがついてしまいます。


そうですね。失礼しました。

訂正
コード:

int len;
while((len=fis.read(b)) != -1) {
    server.write(b, 0, len);
}


galaxyRC
会議室デビュー日: 2004/12/27
投稿数: 10
投稿日時: 2004-12-30 10:23
ご返答がありがとうございます。

やっとできました。やはりいわれた通りになっています。

スキルアップ/キャリアアップ(JOB@IT)