ファイルアップロードコントロールからファイルストリームを設定するにはどうすればよいですか?

これは私のコードなので、FileUploadCotrolのファイルをFILESTREAMに入れることはできません。

//The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;

// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
FileStream fs = fileInf.OpenRead();

try
{
   //Stream to which the file to be upload is written
    Stream strm = reqFTP.GetRequestStream();

   //Read from the file stream 2kb at a time
    contentLen = fs.Read(buff, 0, buffLength);

   //Till Stream content ends
    while (contentLen != 0)
    {
       //Write Content from the file stream to the FTP Upload Stream
        strm.Write(buff, 0, contentLen);
        contentLen = fs.Read(buff, 0, buffLength);
    }

   //Close the file stream and the Request Stream
    strm.Close();
    fs.Close();
}

私のWebサイトからFileUploadコントロールを使用する必要があるようですが、コントロールがストリームを作成し、ファイルストリームを作成するのは不思議です。はい、FTPingしています。

2
どのタイプが 'fileInf'ですか? 「reqFTP」はどのタイプですか?
追加された 著者 Glenn Ferrie,
最終的に私は思っているMemoryStreamを使用する必要があります。もう少し情報が必要です
追加された 著者 Glenn Ferrie,
申し訳ありません...私はこれに対してテストするFTPを持っていません...以下の結果をテストすることはありませんでした。
追加された 著者 Glenn Ferrie,
//UriからFtpWebRequestオブジェクトを作成するreqFTP =(FtpWebRequest)FtpWebRequest.Create(新しいUri( "ftp://" + sFtpId + "/" + fileInf.Name))
私はfileuploadコントロールから取得するファイル名を渡します。
追加された 著者 StephanM,
うわー、今朝はまだ何も。私は、マイクロソフトと2つのステップのアプローチを取って、コントロールをサーバー上に置いてそこからFTPにする必要があるかもしれない。 Yukは、ISPに電話をして、大きなファイルのためのスペースがあるかどうかを確認する必要があります。
追加された 著者 StephanM,
さて、現在、2つのステップのプロセスを実行するには、まだ100mgのファイルでテストする必要があります。
追加された 著者 StephanM,

1 答え

ここでは、 FileInfoFtpWebRequest の2つのタイプを引数として取り、その間のデータをストリームするサンプルメソッドを示します。私はこれがうまくいくと思います。

    void UploadFileToFtp(FileInfo file, FtpWebRequest req)
    {
        int buffLength = 2048;

        using (var reader = new BinaryReader(file.OpenRead()))
        {
            using (var writer = new BinaryWriter(req.GetRequestStream()))
            {
                while (reader.PeekChar() > 0) writer.Write(reader.ReadBytes(buffLength));
            }
        }
    }

お役に立てれば!

0
追加された
私はそれを試してみましょう、私は2ステップのプロセスを行うためにそれを得ましたが、私は本当にそこにこのサイズのものを格納することを避けたいと思います。
追加された 著者 StephanM,
エラーを取得する----出力されたcharバッファーが小さすぎて、Unicode(UTF-8)のフォールバック 'System.Text.DecoderReplacementFallback'をエンコードするデコードされた文字を含むことができません。パラメータ名:charsファイルをftpサーバに保存しますが、ファイルは破損しています。
追加された 著者 StephanM,
私はオープン "、Encoding.ASCII"に追加することでエラーを解消することができました。しかし、私がロードしているpdfファイルはまだゴミです。
追加された 著者 StephanM,
サーバー上のファイルサイズは82KB、PDFは613.6 KB
追加された 著者 StephanM,