C# 是否有任何可能的方式以编程方式保存到指定下载文件夹以外的其他文件夹?

C# 是否有任何可能的方式以编程方式保存到指定下载文件夹以外的其他文件夹?,c#,asp.net,file,save,C#,Asp.net,File,Save,我正在开发一个ASP.NET Web应用程序,其中表转换为excel电子表格。我想让用户选择保存在下载部分以外的其他地方。我意识到这很可能是被禁止的,但可能有某种类/机制是由ASP.net框架促成的 这是我目前的代码: protected void saveDataButton_Click(Object sender, EventArgs e) { SaveFileDialog browser = new SaveFileDialog(); string

我正在开发一个ASP.NET Web应用程序,其中表转换为excel电子表格。我想让用户选择保存在下载部分以外的其他地方。我意识到这很可能是被禁止的,但可能有某种类/机制是由ASP.net框架促成的

这是我目前的代码:

protected void saveDataButton_Click(Object sender, EventArgs e)
    {
        SaveFileDialog browser = new SaveFileDialog();
        string fileName;

        if (browser.ShowDialog() == DialogResult.OK)
        {
            fileName = browser.FileName;
        }
        else
            return;

       DataTable table = (DataTable)Session["tableData"];


       HttpContext context = HttpContext.Current;
       context.Response.Clear();

       context.Response.ContentType = "text/csv";
       context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName + ".csv");



       foreach (DataColumn column in table.Columns)
       {
            context.Response.Write(column.ColumnName + ";");
       }
       context.Response.Write(Environment.NewLine);
       foreach (DataRow row in table.Rows)
       {
            for (int i = 0; i < row.ItemArray.Length; i++)
            {
                context.Response.Write(row[i].ToString().Replace(";", string.Empty) + ";");
            }
            context.Response.Write(Environment.NewLine);
       }

       context.Response.End();
    }
protectedvoid saveDataButton_单击(对象发送方,事件参数e)
{
SaveFileDialog browser=新建SaveFileDialog();
字符串文件名;
if(browser.ShowDialog()==DialogResult.OK)
{
fileName=browser.fileName;
}
其他的
返回;
DataTable=(DataTable)会话[“tableData”];
HttpContext=HttpContext.Current;
context.Response.Clear();
context.Response.ContentType=“text/csv”;
context.Response.AppendHeader(“内容处置”、“附件;文件名=“+filename+”.csv”);
foreach(table.Columns中的DataColumn列)
{
context.Response.Write(column.ColumnName+“;”);
}
context.Response.Write(Environment.NewLine);
foreach(table.Rows中的DataRow行)
{
for(int i=0;i
我知道在这种情况下我使用文件名的方式是错误的,因为文件名实际上是在我的代码中存储文件路径+文件名。有没有办法指定文件路径


我能想到的唯一其他解决方案是,我在页面上创建了某种文件,并让它们右键单击+另存为。这是一个糟糕的选择吗?还有其他的吗?

没有。web应用程序对本地文件系统一无所知。(事实上,除了
内容处置
头之外,HTTP协议甚至不知道“文件”是什么。)


您所做的(除了在
content disposition
标题中有完整路径之外)是正确的。向web客户端发送文件的标准方法是设置该头并将文件内容写入输出。客户端上发生的事情完全取决于web浏览器。如果用户的web浏览器设置为在没有提示的情况下自动将下载内容保存到特定文件夹,则您无法从服务器更改下载内容。

否,如果用户计算机上保存的文件由web浏览器指定,则与web服务器无关。想想看,你不知道网站访问者正在运行什么操作系统,更不用说你在服务器上指定的任意路径了。

Windows应用程序或ASP.Net Web窗体应用程序在我看来像Web?你真的在ASP.Net应用程序中使用SaveFileDialog吗!?佩里:哈哈,不再是了。没什么意义/禁运