Диалоговое окно "Сохранить" для загрузки файла. Сохранение файла с сервера 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();
                }
            }
        }
Другие вопросы по тегам