Я использую приведенный ниже код для загрузки файлов Word / Excel. Как я могу открыть этот файл автоматически после загрузки?
private void DownloadFile(byte[] bArray, string mimeType, string KeyPath, bool bForcedownload)
{
Response.ContentType = mimeType;
if (bForcedownload)
Response.AppendHeader("Content-disposition",
"attachment; filename = " + Path.GetFileName(KeyPath));
Response.AppendHeader("content-length", bArray.Length.ToString());
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.AppendHeader(@"Pragma", @"no-cache");
Response.BinaryWrite(bArray);
FlushSupressReponse();
}
private void FlushSupressReponse()
{
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
Ты серьезно ? Это строки для загрузки файла? Response.AppendHeader ("Content-disposition", "attachment; filename = " + Path.GetFileName (KeyPath)); Response.AppendHeader ("длина содержимого", bArray.Length.ToString ()); Response.Cache.SetCacheability (HttpCacheability.NoCache); Response.AppendHeader (@ "Pragma", @ "no-cache"); Response.BinaryWrite (bArray);
Да я серьезно. Это код ASP.NET, который отвечает на запрос браузера. Вы сами писали этот код или просто где-то нашли?
Это производственный код, который используется для загрузки файла ... У нас есть пользовательский интерфейс, который запускается в браузере, пользователь нажимает на имя файла, и файл загружается ... но пользователю нужно щелкнуть файл, чтобы открыть его, но я хочу открыть его автоматически один раз он скачивается.
Гм ... Да. Response
предназначен для написания ответа (ответа), что означает, что вы отправляете, а не получаете, что означает, что вы загружаете, а не загружаете.
Твой комментарий:
We have UI which runs on browser , user click on filename and file gets downloaded...but user need to click on file to open it but i want to open it automatically once it is downloaded.
Вы не можете. Это полностью выбор пользователя. Вы не можете заставить пользователя веб-сайта автоматически открывать файл после загрузки.
Это сделано намеренно, поскольку таким образом распространять вирусы очень легко.
Однако вы можете дать своим пользователям инструкции о том, как настроить их браузер для автоматического открытия файлов определенных типов. Например, в Chrome после загрузки файла рядом с именем файла появляется стрелка. Нажмите на нее, и появится опция «Автоматически открывать файлы этого типа».
Но это все еще зависит от ваших пользователей.
Это неверно для файлов pdf, поскольку мы можем использовать приведенный выше код для загрузки и открытия файла в браузере .. но я знаю, что документы excel / word не могут быть открыты в браузере. Я получаю массив байтов и использую Response.binarywrite ()
Используя приведенный выше код для файлов pdf, я нажимаю на файл, и он открывается в браузере
PDF-файлы открываются в браузере, а не во внешней программе (хотя пользователь может настроить браузер, чтобы вместо этого открывать их в Adobe Reader). Это уникально для PDF.
Например, см. здесь. Он указывает вам на опцию в Chrome под названием «Загружать файлы PDF вместо того, чтобы автоматически открывать их в Chrome». Это показывает, что он обрабатывает файлы PDF иначе, чем все остальное.
Раньше существовала технология, называемая компонентом ActiveX, позволяющая загружать Excel в браузере IE.
Похоже, вы загрузка файл (отправляете файл клиенту), а не загружаете.