Как установить Filestream из элемента управления загрузкой файлов? - PullRequest
2 голосов
/ 28 октября 2011

Это мой код, и я не могу получить файл, который у меня есть в 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();
}

Похоже, я должен использовать элемент управления Fileupload, чтобы сделать из моеговеб-сайт, но кажется странным, что элемент управления создает поток, а не файловый поток.Да, я FTP-файл.

1 Ответ

0 голосов
/ 29 октября 2011

Вот пример метода, который принимает два типа, на которые мы нацеливаемся, FileInfo и FtpWebRequest, в качестве аргументов и потоков данных между ними. Я верю, что это сработает.

    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));
            }
        }
    }

Надеюсь, это поможет!

...