gaurav.s23 Ответов: 1

Как я могу позволить клиенту выбрать каталог файла и имя для сохранения файла ASP.NET веб-форма?


I have already created a dll which has function that loads dataset to xls file.
I am trying to use the same dll for the task. Function takes two parameters, filePath with file name and dataset, and it does is create xlsx file 
in the destination with the data. 
Now i have to let user to decide to whereever they want to create (save) that xls file in their machine.

How could i achieve this task in asp.net web form.


Please help.


Что я уже пробовал:

My code is something like this:


 protected void btnExport_Click(object sender, EventArgs e)
 {
DataSet dataSet = new DataSet();
//code to get data from database
sqlDataAdapter.Fill(dataSet);

string fullFileName = filePath + fileName;
ExcelUtility.ExportDataSetToExcel(fullFileName, dataSet);
}

I want user to set fullFileName. How do i do this?

F-ES Sitecore

Либо сохраните его где-нибудь на сервере, а затем потоком загрузите файл на клиент, либо, если ваш "ExcelUtility" поддерживает его, просто передайте файл прямо на клиент без необходимости сохранения локально. Если вы сохраняете файл на сервере, вам нужно беспокоиться о столкновениях имен файлов, когда его удалить и что делать дальше.

Гугл для "asp.net скачать файл на клиент" для множества примеров того, как это сделать, вы не можете указать, куда идет файл, хотя все, что вы можете сделать, это вызвать диалог "загрузить или сохранить".

[no name]

Как мне передать файл напрямую? Этот вариант звучит для меня лучше всего.

F-ES Sitecore

Все, что вы используете для создания XLS-файла, должно быть в состоянии предоставить его в виде объекта потока или массива байтов. Если он не может делать эти вещи, вы, вероятно, не сможете транслировать его без сохранения.

[no name]

Я собираюсь сохранить файл на сервере, а затем вернуться к ответу.WriteFile (fp) для загрузки.

У меня есть еще один вопрос, он здесь. не могли бы вы пожалуйста посмотреть на него.
https://www.codeproject.com/Answers/1198265/How-doi-call-angular-js-function-and-date-selected#answer1

[no name]

Если я сохраню файл на сервере, а затем позволю пользователю загрузить его по щелчку кнопки, не возникнет ли двусмысленность, если несколько пользователей попытаются сохранить файл одновременно?

[no name]

- Спасибо, сэр.

1 Ответов

Рейтинг:
10

OriginalGriff

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

И пытаться заставить пользователя выбрать путь на вашем сервере глупо - и опасно - они (да и вы сами) понятия не имеют, где в производственной машине вам разрешено хранить файлы, кроме как относительно корневого каталога Вашего сайта. И вы не знаете, что это такое, потому что это не зафиксировано в файловой системе - вот почему у вас есть сервер.MapPath для преобразования относительного пути в" правильный " путь для функций ввода-вывода файлов.

Может показаться, что это работает в разработке, но это потому, что клиент и сервер работают на одном компьютере. В производственной среде они могут быть разделены тысячами миль, а сервер вообще не имеет доступа к клиентской файловой системе.


[no name]

Как и то, как мы сохраняем изображение из интернета на наш компьютер, я хочу добиться чего-то подобного.

OriginalGriff

Ваш серверный код абсолютно не контролирует это или даже то, что изображение вообще сохраняется. Это все зависит от программного обеспечения, работающего на клиенте и взаимодействующего с вашим сервером через интернет: браузер.
Вы не можете сказать браузеру, что делать, просто загрузите в него данные и скажите ему, что такое имя файла - без пути.

[no name]

Теперь я понял. - Спасибо, сэр.