Диалоговое окно "Сохранить" для загрузки файла. Сохранение файла с сервера ASP.NET на клиент
Я искал в интернете, но не смог найти полезного ответа.
У меня есть веб-сайт ASP.NET, который развернут на сервере. Веб-сайт ASP.NET на сервере может получить доступ к каталогу с именем W:/ . Клиенты в компании могут получить доступ к веб-сайту. На веб-сайте в ListBox перечислены все PDF-файлы из каталога W:/ . Клиент должен иметь возможность выбрать PDF-файлы из списка и сохранить их на своем локальном ПК, выбрав место для них.
Что-то вроде сохранения в виде файла на веб-страницах.
Не могли бы вы дать мне какое-то решение или обойти?
5 ответов
Наконец я нашел статью, которая предлагает диалоговое окно Сохранить для загрузки файла из ASP.NET
Я размещаю это здесь, может помочь кому-то еще и сэкономить время.
String FileName = "FileName.txt";
String FilePath = "C:/...."; //Replace this
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
response.TransmitFile(FilePath);
response.Flush();
response.End();
Это расширение для решения пользователя 1734609, которое получает файл локально.
Чтобы загрузить файл с сервера на клиент:
public void DownloadFile()
{
String FileName = "201604112318571964-sample2.txt";
String FilePath = AppDomain.CurrentDomain.BaseDirectory + "/App_Data/Uploads/" + FileName;
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
response.TransmitFile(FilePath);
response.Flush();
response.End();
}
Правильные ключевые слова - "File Browser asp.net", чтобы найти множество примеров с исходным кодом.
Вот один из кодпроектов:
http://www.codeproject.com/Articles/301328/ASP-NETUser-Control-File-Browser
Получить содержимое файла в байте [] с диска W и записать его в локальный файл.
byte[] data = File.ReadAllBytes(WDriveFilePath)
FileStream file = File.Create(HttpContext.Current.Server.MapPath(MyLocalFile));
file.Write(data, 0, data.Length);
file.Close();
Я сделал что-то вроде этого, чтобы получить файл.
protected void btnExportFile_Click(object sender, EventArgs e)
{
try
{
Thread newThread = new Thread(new ThreadStart(ThreadMethod));
newThread.SetApartmentState(ApartmentState.STA);
newThread.Start();
// try using threads as you will get a Current thread must be set to single thread apartment (STA) mode before OLE Exception .
}
catch (Exception ex)
{
}
}
static void ThreadMethod()
{
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
// Code to write the stream goes here.
myStream.Close();
}
}
}