Как сохранить файлы с интерфейсом FileUpload (GUI) в выбранном месте в asp.net?
Это сводится к простому сохранению в определенном месте в asp.net. Аналогично использованию "Сохранить как..." в любой стандартной программе, такой как Microsoft Word.
GUI, который я ищу, точно такой же, как GUI для элемента управления FileUpload в asp.net. Однако элемент управления FileUpload позволяет загружать файлы только в запущенную программу. Все, что я хочу, это выбрать место для сохранения файла, созданного в программе.
Я уже написал следующий код:
protected void btnSaveYourBuild_Click(object sender, EventArgs e)
{
// Раздел А
System.Drawing.Image chosenGoldenLineTop = GetSystemDrawingImage(ImageGoldenLineTop);
System.Drawing.Image chosenGoldenLineBottom = GetSystemDrawingImage(ImageGoldenLineBottom);
System.Drawing.Image chosenImageTop = GetSystemDrawingImage(ImageTop);
System.Drawing.Image chosenImageJungle = GetSystemDrawingImage(ImageJungle);
System.Drawing.Image chosenImageMid = GetSystemDrawingImage(ImageMid);
System.Drawing.Image chosenImageAdc = GetSystemDrawingImage(ImageAdc);
System.Drawing.Image chosenImageSupp = GetSystemDrawingImage(ImageSupp);
// Раздел B
Bitmap B = new Bitmap(chosenGoldenLineBottom.Width, chosenGoldenLineBottom.Height + chosenImageSupp.Height + chosenGoldenLineTop.Height);
using (Graphics g = Graphics.FromImage(B))
{
g.DrawImage(chosenGoldenLineTop, 0, 0, 1540, 49);
g.DrawImage(chosenImageTop, 0, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageJungle, chosenImageTop.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageMid, chosenImageTop.Width + chosenImageJungle.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageAdc, chosenImageTop.Width + chosenImageJungle.Width + chosenImageMid.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageSupp, chosenImageTop.Width + chosenImageJungle.Width + chosenImageMid.Width + chosenImageAdc.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenGoldenLineBottom, 0, chosenGoldenLineTop.Height + chosenImageTop.Height, 1540, 53);
}
// Раздел C
B.Save(System.IO.Path.Combine(
Environment.GetFolderPath(
Environment.SpecialFolder.Desktop),
"Team Awesome v3" + ".png"));
// Saves on the desktop
}
Для вашего удобства я разделил большую партию кода на 3 раздела: A, B и C. Просто сказал: в разделе A 7 изображений. Раздел B объединяет 7 изображений в одно увеличенное изображение. Раздел C сохраняет изображение на рабочий стол.
Я очень доволен этим уже. Но я уверен, что пользователи хотели бы иметь возможность выбрать конкретное место для сохранения этого 1 большего изображения, по крайней мере, я бы.
Теперь решение, которое я пытаюсь найти, это либо элемент управления, который может сохранить 1 большее изображение в выбранном пользователем месте, который может заменить раздел C.
ИЛИ ЖЕ
Элемент управления, который выбирает определенное местоположение и может вернуть путь, по которому я могу сохранить 1 увеличенное изображение, заменив только один аргумент из раздела C.
Я пробовал множество разных вещей, которые оказались неэффективными или потерпели неудачу с первой попытки. Например, система FileDialog (которая недоступна в asp.net) и элемент управления FileUpload, который загружает файл только в программу, а не наоборот.
Обратите внимание, как можно попытаться получить Path из элемента управления FileUpload и попытаться создать иллюзию для пользователя, что он сохраняет файл. Но нельзя просто вставить редактирование FileName (перед сохранением, как в любом обычном случае) в элемент управления FileUpload, и при этом вы не можете выбрать каталог, вы должны выбрать файл и обрезать имя файла в пути, что приводит к путанице для пользователя.
Я потратил около 17 часов, пытаясь найти решение, но мне не удалось. Не могли бы вы помочь мне?
1 ответ
Сохранение пользователя зависит от браузера, asp.net работает в "песочнице" по соображениям безопасности и не может это изменить. Может быть, плагин / надстройка в браузере может помочь вам достичь функциональности, но это все еще крайне маловероятно с решением, которое вы пытаетесь.
с помощью надстройки браузера вы можете добиться этого, позволив ей прослушивать веб-URL, а затем дать пользователю приглашение сохранить файл, который фактически вырезает и вставляет файл, сохраненный в пользовательской системе (например, в временную папку).
Но, опять же, для установки в браузере пользователя потребуется надстройка браузера, которая является необязательной для пользователей и написана по-разному для каждого браузера.
С уважением