这归结为简单地保存到 asp.net 中的特定位置。类似于在 Microsoft Word 等任何标准程序中使用“另存为...”。
我正在寻找的 GUI 与 asp.net 中 FileUpload 控件的 GUI 完全相同。但是,FileUpload 控件只允许您将文件上传到正在运行的程序。我想要的只是选择一个位置来保存在程序中创建的文件。
我已经编写了以下代码:
protected void btnSaveYourBuild_Click(object sender, EventArgs e)
{
// A节
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 个图像组合成 1 个更大的图像。C 部分将图像保存到桌面。
我已经很高兴了。但是,我确信用户希望能够选择一个特定的位置来保存这 1 个更大的图像,至少我会。
现在,我试图找到的解决方案是一个可以将 1 个更大的图像保存到用户选择的位置的控件,它可以替换 C 部分。
或者
一个控件,它选择一个特定的位置并能够返回一个路径,我可以将 1 个更大的图像保存到该路径,只替换 C 节的一个参数。
我尝试了许多不同的方法,但在第一次尝试时结果无效或失败。例如 FileDialog 系统(在 asp.net 中不可用),以及 FileUpload 控件,它只将文件上传到程序而不是相反。
请注意如何尝试从 FileUpload 控件获取路径并尝试给用户造成他正在保存文件的错觉。但是,不能简单地将文件名编辑(在保存之前,就像在任何正常情况下一样)插入到 FileUpload 控件中,您也不能实际选择一个目录,您必须选择一个文件并切断路径中的文件名,给用户带来令人困惑的体验。
我花了大约 17 个小时试图找到解决方案,但我失败了。你可以帮帮我吗?