2011-01-11 35 views
4

私はファイルのバイト配列を持っていますが、それを受け取り、ファイルをリモートファイルサーバーに保存する方法はありますか?ファイルへのバイト配列

ありがとう、 ロッド。ファイルにデータを書き込む

+1

HTTP、FTP、Windowsファイル共有など、リモートサーバーに転送して保存するプロトコルを決定する必要があります。あなたは何を達成しようとしていますか? – dtb

+0

なぜこのjavascriptとjqueryにタグが付けられていますか? – Hogan

+0

@dtb私は自分のウェブサイトからファイルを取り出し、リモートファイルサーバーに転送しようとしていますか? – Rod

答えて

10
File.WriteAllBytes(@"\\server\public_share\MyFile.txt", byteArray); 
0

シンプル部分と@aaronは...どのように

i.e. File.WriteAllBytes(....etc 

しかし、あなたがワイヤ上でバイナリデータを転送している場合、注意すべき何かをあなたを示していていますデータに制御文字として解釈される可能性のあるバイトが含まれていると、データ転送に問題が発生します。

データを安全に転送できるように、まずデータをエンコードする必要があります。通常、Base64エンコーディングのようなものを使用します。

あなたはそれを行うに変換するヘルパークラスを使用することができます...

Convert.ToBase64String("file contents"); 
+0

?どのような場合に、バイナリファイルをネットワーク経由で保存すると、あなたが記述した種類の問題が発生することがわかりましたか?おそらくFTPで、あなたはバイナリモードやテキストのみのプロトコルを指定しないが、確かにWindowsファイル共有ではないなら! –

+0

こんにちはJim、http転送で...これは彼がやっていることではありません...しかし、ファイアウォールの問題を避けるためにポート80を通してファイルサーバーにデータを転送するのはかなり一般的なシナリオです。 –

0

あなたは分離コードでこれをやっているなら、あなたは、FileStreamをとBinaryWriterオブジェクトを使用する必要があります。

このようなものです。

FileStream filestream = new FileStream("myfile.txt", FileMode.Open); 
BinaryReader br = new BinaryReader(filestream); 

String msg = br.ReadString(); 
br.Close(); 
filestream.Close(); 

FileStream networkStream = new FileStream(@"\\server\share\file.txt", FileMode.Create); 
BinaryWriter bw = new BinaryWriter(filestream); 

bw.Write(msg); 
bw.Close(); 
networkStream.Close(); 

あなたは多分HTMLの参照ボタンを使用してのJavascriptを通してそれを渡しているなら、あなたは事の同じ種類を行う必要がありますが、あなたは投稿フォームのリクエストからファイルストリームを取得します。

ネットワークの場所に問題が発生している可能性があります.IISを使用している場合は、仮想ディレクトリを設定してIISで資格情報を設定できます。別の方法として、ファイルをネットワークサーバーに書き込むために偽装を行う必要があります。

マイク

関連する問題