Я использовал код из официальной Документации Microsoft для чтения содержимого из файлового потока на сервере и загрузки его по пути от пользователя.
На странице X я сохраните файл Excel в папке сервера, затем я сохраню путь к этому файлу в переменной сеанса, а затем выполню код JavaScript, чтобы открыть страницу «загрузки» на новой вкладке. В основной функции этой страницы приведен код ниже. Код загружает файл просто отлично, он появляется в папке «Загрузки» пользователя, но проблема в том, что пользователь не получает приглашение загрузки браузера. Как и в Chrome, вы получаете панель загрузки в нижней части браузера, а затем вы можете нажать на загруженный файл, и он откроется. Как мне отредактировать мой код, чтобы он отображал загруженный файл в загружаемой части браузера?
Простите за мой английский sh, это не мой родной язык.
Это код:
if (Session["doc"] != null) {
string pathSource = Session["doc"].ToString();
string downloadFolderPath = Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "{374DE290-123F-4565-9164-39C4925E467B}", String.Empty).ToString();
string pathNew = downloadFolderPath + "\\" + Path.GetFileName(pathSource);
try {
if (Response.IsClientConnected) {
// Source file:
using (FileStream fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read, FileShare.Read)) {
// Read the source file into a byte array.
byte[] bytes = new byte[fsSource.Length];
int numBytesToRead = (int)fsSource.Length;
int numBytesRead = 0;
while (numBytesToRead > 0) {
// Read may return anything from 0 to numBytesToRead.
int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
// Break when the end of the file is reached.
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
numBytesToRead = bytes.Length;
// Write the byte array to the other FileStream.
// File in the downloads folder:
using (FileStream fsNew = new FileStream(pathNew, FileMode.Create, FileAccess.Write, FileShare.Read)) {
fsNew.Write(bytes, 0, numBytesToRead);
}
}
}
}
catch (FileNotFoundException ioEx) {
Console.WriteLine(ioEx.Message);
}
}