Как правильно загрузить файлы (изображения / видео / и т. Д.) На сервер, используя Stream на WCF REST API в C #? - PullRequest
0 голосов
/ 15 февраля 2019

Я настраиваю функцию для загрузки изображений / видео на сервер, используя WCF REST API.Файлы успешно загружены в нужную папку назначения, но в конечном итоге они становятся нечитаемыми независимо от типа файла.

Что-то не так в моем коде (особенно в части FileStream-Write), что вызываетчто случится?Или, возможно, проблема в другом месте (например, в файле Web.config)?

Вот мой фрагмент кода:

public string uploadFile(Stream fileStream)
        {
            String fileName = System.Web.HttpContext.Current.Request.QueryString["fileName"];
            String destFileName = HHCWCFApp.Properties.Settings.Default.TemporaryFilePath + fileName;
            String destLink = HHCWCFApp.Properties.Settings.Default.Hyperlink + fileName;

            try
            {
                int length = 256;
                int bytesRead = 0;
                Byte[] buffer = new Byte[length];
                using (FileStream fs = new FileStream(destFileName, FileMode.Create))
                {
                    do
                    {
                        bytesRead = fileStream.Read(buffer, 0, length);
                        fs.Write(buffer, 0, bytesRead);
                    }
                    while (bytesRead == length);
                }

                fileStream.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            if (File.Exists(destFileName))
            {
                return destLink;
            }
            else
            {
                return "Not Found";
            }
        }

1 Ответ

0 голосов
/ 15 февраля 2019

Какие файлы вы загружаете?файлы большего размера могут не совпадать с максимальной длиной запроса, это задается в веб-конфигурации, как показано ниже

 <configuration> 
<system.web> 
    <httpRuntime maxRequestLength="xxxx" /> 
</system.web> 

Попробуйте текстовый файл с несколькими килобайтами, и если это работает, нобольшие файлы не могут решить проблему.Я проверил ваш код, и там нет проблем.

также имейте в виду, что на используемом вами сервере IIS также может быть установлена ​​максимальная длина запроса, которая может переопределить ваше значение.

Длина по умолчанию составляет 4 МБ, и вы можете написать функцию для извлечения значения, чтобы ваш клиентский / вызывающий код мог проверить, превышает ли максимальный размер файла, который он будет передавать.

чтение здесь на странице Microsoft для получения дополнительной информации.

Редактировать: неправильно читать код в первый раз, извинения

...