#iis-7 #local #filestream #webrequest
#iis-7 #Местные новости #filestream #webrequest
Вопрос:
У меня есть сайт, настроенный в IIS. Это позволяет пользователям загружать файлы из удаленного облака на свой собственный локальный рабочий стол. ОДНАКО контекст, похоже, перепутан, потому что, когда я получаю доступ к веб-сайту извне через IP и выполняю загрузку, файл сохраняется на сервере, на котором размещен сайт, а не локально. Что происходит??
Мой соответствующий код строк:
using (var sw2 = new FileStream(filePath,FileMode.Create))
{
try
{
var request = new RestRequest("drives/{chunk}");
RestResponse resp2 = client.Execute(request);
sw2.Write(resp2.RawBytes, 0, resp2.RawBytes.Length);
}
}
Ответ №1:
Ваш код записывает файл в локальную файловую систему сервера. Если вы хотите отправить файл клиенту, вам нужно сделать что-то вроде
Response.BinaryWrite(resp2.RawBytes);
Объект ответа — это то, что вы используете для отправки данных обратно клиенту, который отправил запрос на вашу страницу.
Комментарии:
1. Ответ. BinaryWrite, похоже, не работает. Файл создается, но в него не записываются никакие данные. Есть предложения?
2. Вы уверены, что в resp2 есть данные, которые вы ожидаете в нем?
3. Фактически, он создает файл — по-прежнему на сервере — но в него не записываются данные.
4. Я уверен, поскольку он отлично работает при сохранении на сервер.
5. Как работает ответ. BinaryWrite знает, в какой файл записывать?
Ответ №2:
Я полагаю, что опубликованный вами фрагмент кода выполняется где-то в каком-то коде, скрытом за ним. Который запущен на сервере — он не будет запущен на клиенте. Вам нужно будет записать эти байты в объект ответа и указать, какой тип содержимого и т.д., И разрешить пользователю сохранять файл самостоятельно.
Комментарии:
1. У меня есть пользовательский тип в месте назначения, и я использую его в качестве пути к файлу. Вы хотите сказать, что мне нужно использовать что-то другое, кроме объекта FileStream?
2. Не имеет значения, что вводит пользователь. Этот код выполняется на СЕРВЕРЕ.