FileUpload к FileStream

Я в процессе отправки файла наряду с HttpWebRequest. Мой файл будет от FileUpload UI. Здесь я должен преобразовать Загрузку Файла на filestream для отправки потока наряду с HttpWebRequest. Как я преобразовываю FileUpload в filestream?

15
задан Gopi 6 August 2018 в 04:48
поделиться

3 ответа

Поскольку FileUpload.PostedFile.InputStream дает мне Stream, я использовал следующий код, чтобы преобразовать его в массив байтов

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[input.Length];
    //byte[] buffer = new byte[16 * 1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}
26
ответ дан 1 December 2019 в 00:44
поделиться

Невозможно преобразовать FileUpload в FileStream. Тем не менее, вы можете получить MemoryStream из этого свойства FileUpload, добавленногоFile. Затем вы можете использовать этот MemoryStream для заполнения своего HttpWebRequest.

3
ответ дан 1 December 2019 в 00:44
поделиться

Возможно, лучше передавать входной поток непосредственно в выходной:

inputStream.CopyTo(outputStream);

Таким образом, вы не будете кэшировать весь файл в памяти перед повторной передачей. Например, вот как вы записываете его в FileStream:

FileUpload fu;  // Get the FileUpload object.
using (FileStream fs = File.OpenWrite("file.dat"))
{
    fu.PostedFile.InputStream.CopyTo(fs);
    fs.Flush();
}

Если вы хотите записать его непосредственно в другой веб-запрос, вы можете сделать следующее:

FileUpload fu; // Get the FileUpload object for the current connection here.
HttpWebRequest hr;  // Set up your outgoing connection here.
using (Stream s = hr.GetRequestStream())
{
    fu.PostedFile.InputStream.CopyTo(s);
    s.Flush();
}

Это будет более эффективно, поскольку вы будете напрямую передавать входной файл на конечный хост, без предварительного кэширования в памяти или на диске.

11
ответ дан 1 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: