.NET WEB API Откройте файл изображения на новой вкладке браузера с помощью FTP - PullRequest
0 голосов
/ 01 октября 2018

У меня есть функция, которая использует протокол FTP для загрузки изображения с другого сайта.Но теперь я хочу открыть его в новой вкладке, а не загружать его.Вот мой код C # для его загрузки.Спасибо за чтение

byte[] byteFTP = ftpclass.ReadFTPFile(results, ConfigCache.HostURL, ConfigCache.UserName, ConfigCache.Password);
if (byteFTP != null)
{
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    var dataStream = new MemoryStream(byteFTP);
    response.Content = new StreamContent(dataStream);
    response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = results;
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    response.Content.Headers.ContentLength = dataStream.Length;
    return response;
}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Чтобы разрешить просмотр файла на новой вкладке, необходимо установить для заголовка Content-Disposition значение "inline".Однако, в зависимости от типа файла, это все еще может быть решено браузером.Inline просто означает, что попытка будет предпринята для его отображения, прежде чем вернуться к загрузке

0 голосов
/ 01 октября 2018

Вы не можете напрямую выбрать принудительное открытие новой вкладки со стороны сервера.Конечно, вы можете включить некоторый код JavaScript, который пытается открыть новую вкладку 1 , но есть проблема.Вы слышали о всплывающей рекламе?Наличие JavaScript, произвольно открывающего новые окна , а не в ответ на взаимодействие с пользователем, все чаще блокируется в браузерах.

Итак, вместо этого вам нужно открывать эту новую вкладку (на стороне клиента), когда пользователь выполняет всеВзаимодействие это то, что код в вашем вопросе выполняется в ответ на .Тогда ваш серверный код не имеет ничего общего - вы уже предоставили ему новую вкладку для обычной доставки вашего ответа (и теперь можете удалить связанный код ContentDisposition - вы также можете указать более конкретный тип контента)


1 И, игнорируя остальные вопросы, вы должны будете сделать так, чтобы ваш ответ содержал этого JavaScript , а не изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...