asp.net中 下载文件时如何使下载的文件放到指定文件夹?

study_hard_01 2012-04-01 11:03:58
目前我实现的是,用户可以下载文件,但是用户下载后文件的保存路径不能固定,不知道怎么实现用户下载后文件放到我指定文件夹,也就是用户不能选择保存路径,谢谢
我下载代码是这样的:
string downLoadPath = this.Server.MapPath("Files\\a.exe");
if (File.Exists(downLoadPath))
{
System.IO.FileInfo file = new System.IO.FileInfo(downLoadPath);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(file.Name));
Response.AppendHeader("Content-Length", file.Length.ToString());
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
}
}
...全文
571 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
study_hard_01 2012-04-01
  • 打赏
  • 举报
回复
通过使用浏览器或是默认下载器下载,就可以保存到想保存的文件夹了====这个代码中怎么实现啊?
小河 2012-04-01
  • 打赏
  • 举报
回复
应该很难 因为客户端文件夹 和盘符可能都不一样
EnForGrass 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:

引用楼主 的回复:
目前我实现的是,用户可以下载文件,但是用户下载后文件的保存路径不能固定,不知道怎么实现用户下载后文件放到我指定文件夹,也就是用户不能选择保存路径,谢谢
我下载代码是这样的:
string downLoadPath = this.Server.MapPath("Files\\a.exe");
if (File.Exists(downLo……
[/Quote]
下载的话参考一下
study_hard_01 2012-04-01
  • 打赏
  • 举报
回复
这些浏览器的行为,也就是客户行为,网站无法决定。
除非你写一个activex控件===请问您可以提供一下思路吗
EnForGrass 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

引用楼主 的回复:
目前我实现的是,用户可以下载文件,但是用户下载后文件的保存路径不能固定,不知道怎么实现用户下载后文件放到我指定文件夹,也就是用户不能选择保存路径,谢谢
我下载代码是这样的:
string downLoadPath = this.Server.MapPath("Files\\a.exe");
if (File.Exists(downLoadPath))
……

……
[/Quote]
应该可以吧
给个代码

/// <summary>
/// 导出Excel
/// </summary>
/// <param name="dtTemp"></param>
/// <param name="ServerPath"></param>
/// <param name="TextName"></param>
/// <param name="fc">将number格式化成string</param>
public static void ExportTasks(System.Data.DataSet ds, string ServerPath, string TextName, int fc, string [] sName)
{
// 定义要使用的Excel 组件接口
// 定义Application 对象,此对象表示整个Excel 程序
Application excelApp = null;
// 定义Workbook对象,此对象代表工作薄
Workbook workBook;
// 定义Worksheet 对象,此对象表示Execel 中的一张工作表
Worksheet ws = null;
//定义Range对象,此对象代表单元格区域
Range range;

try
{
excelApp = new Application();
workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
for (int d = 0; d<ds.Tables.Count; d++)
{
System.Data.DataTable dtTemp = ds.Tables[d];
int dcell = 1;
int rowindex = 0; int colindex = 0;

int rowcount = dtTemp.Rows.Count;
int colcount = dtTemp.Columns.Count;
//初始化 Application 对象 excelApp

//在工作薄的第一个工作表上创建任务列表

//workBook.Worksheets.Count
ws = (Worksheet)workBook.Worksheets[d+1];

// 命名工作表的名称为
if (sName.Length >= d)
{
ws.Name = !string.IsNullOrEmpty(sName[d]) ? sName[d] : "Sheet"+(d+1).ToString();
}
else
ws.Name = "Sheet" + (d + 1).ToString();
//创建缓存
Object[,] objdata = new object[rowcount + 1, colcount];

//创建标题
foreach (System.Data.DataColumn dc in dtTemp.Columns)
{
objdata[rowindex, colindex++] = dc.ColumnName;
}
//获取数据
for (int i = 0; i < rowcount; i++)
{
dcell = 0;
for (int j = 0; j < colcount; j++)
{
objdata[i + 1, dcell++] = dtTemp.Rows[i][dtTemp.Columns[j].ColumnName].ToString();
}
}
//写入Excel
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount + 1, colcount]);
//range.NumberFormatLocal = "@";//所有字段格式化为文本格式
ws.get_Range(excelApp.Cells[2, fc], excelApp.Cells[rowcount + 1, fc]).NumberFormatLocal = "@";
range.Value2 = objdata;
System.Windows.Forms.Application.DoEvents();
//标题粗体
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[1, colcount]);
range.Font.Bold = true;
//全局左对齐
excelApp.Cells.HorizontalAlignment = Constants.xlLeft;
excelApp.Cells.EntireColumn.AutoFit();
//边线
range = ws.get_Range(excelApp.Cells[1, 1], excelApp.Cells[rowcount + 1, colcount]);
range.Borders.LineStyle = 1;
}
workBook.SaveCopyAs(ServerPath.Replace("//", "\\") + TextName + ".xls");
workBook.Close(false, null, null);
excelApp.Quit();
ws = null;
}
catch (Exception ex)
{
WriteLog.SetErrorMsg("ExportTasks", "", ex.Message); //处理错误
excelApp.Quit();
throw ex;
}
}

调用方法

DataTable dt = new DataTable();

dt = Business.BLL.GetPatientInfo(sql_condition, "CheckRecord_Page", pageCount, resultCount, 0);//获取数据库数据
if (dt.Rows.Count == 0)
{
MessageBox.Show("表数据为空,无法导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
string serverpath = "D:\\beifen\\";//设置路径
string filename = "Patientlist" + DateTime.Now.ToShortDateString();//文件名
Business.Export.ExportExcel.ExportTasks(dt, serverpath, filename, 1, "sheet1");
MessageBox.Show("数据导出成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
jiang580617 2012-04-01
  • 打赏
  • 举报
回复
通过使用浏览器或是默认下载器下载,就可以保存到想保存的文件夹了
踏雪听雨 2012-04-01
  • 打赏
  • 举报
回复
这些浏览器的行为,也就是客户行为,网站无法决定。
除非你写一个activex控件
SomethingJack 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
目前我实现的是,用户可以下载文件,但是用户下载后文件的保存路径不能固定,不知道怎么实现用户下载后文件放到我指定文件夹,也就是用户不能选择保存路径,谢谢
我下载代码是这样的:
string downLoadPath = this.Server.MapPath("Files\\a.exe");
if (File.Exists(downLoadPath))
……
[/Quote]
这个好想办不到- - 因为浏览器机制的关系 有些浏览器倒是可以设置下载路径- -。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧