如何在Web方法中从服务器下载文件? [英] How to download file from server in web method ?
本文介绍了如何在Web方法中从服务器下载文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不知道如何使用web方法从服务器下载文件。我试过这样的事。
我将angularJS中的数据和文件名传递给我的web方法,它创建了excel文件并在服务器中上传。完成文件创建并在服务器上传后
我成功调用我的JS函数后将url返回到另一个webform。
从那里我试图打开新的Web表单,我试图实现下载文件的代码。但是,我的代码将如何知道下载
的生命,因为可能会有多个文件。我如何传递fileName以便我可以识别要下载的文件。
请检查我的代码,让我知道要改变什么以及该怎么做?或任何其他方式来实现这一目标。
谢谢。
我尝试过:
[WebMethod]
公共静态字符串ExportExcel(List< Student> students,string fileName)
{
ListtoDataTableConverter converter = new ListtoDataTableConverter();
DataTable dt = converter.ToDataTable(学生);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
string FilePath = fileLocation + fileName + DateTime.Now.ToString(yyyyMMddHHmmssfff)+。xlsx; ;
DataSetToExcel.ExportDataSet(FilePath,ds);
HttpContext.Current.Response.ContentType =application / octet-stream;
HttpContext.Current.Response.AppendHeader(Content-Disposition,filename =+ Path.GetFileName(FilePath));
返回JsonConvert.SerializeObject(new {Success = true,redirectUrl = VirtualPathUtility.ToAbsolute(〜/ DownloadExcelForm.aspx)});
}
Javascript:
$ scope.SendFile = function(filteredItems){
var xlFile = $ scope.xlFilename;
var students = [];
students = filteredItems;
$ http({
方法:POST,
url:ReportStudent.aspx / ExportExcel,
数据:{学生:学生,文件名:xlFile },
contentType:application / json,
dataType:json
})。then(function(response){
var responsedata = JSON.parse(response。 data.d);
window.location.href = responsedata.redirectUrl;
});
};
Webform Pageload:
protected void Page_Load(object sender,EventArgs e)
{
string filepath =;
Response.ContentType = ContentType;
// Response.AppendHeader(Content-Disposition,attachment; filename =+ Path.GetFileName(FilePath));如何传递此文件路径????
Response.TransmitFile(FilePath);
Response.Flush();
System.Threading.Thread.Sleep(1000);
System.Threading.Thread.Sleep(1000);
if(File.Exists(filepath))
{
File.Delete(filepath);
}
//response.writefile(filepath)
Response.End();
}
解决方案
scope.SendFile = function(filteredItems){
var xlFile =
scope.xlFilename;
var students = [];
students = filteredItems;
http({
method:POST,
url:ReportStudent.aspx / ExportExcel,
数据:{学生:学生,文件名:xlFile},
contentType:application / json,
dataType:json
})。then(function(response){
var responsedata = JSON.parse(response.data.d);
window.location.href = responsedata.redirectUrl;
});
};
Webform Pageload:
protected void Page_Load(object sender,EventArgs e)
{
string filepath =;
Response.ContentType = ContentType;
// Response.AppendHeader(Content-Disposition,attachment; filename =+ Path.GetFileName(FilePath));如何传递此文件路径????
Response.TransmitFile(FilePath);
Response.Flush();
System.Threading.Thread.Sleep(1000);
System.Threading.Thread.Sleep(1000);
if(File.Exists(filepath))
{
File.Delete(filepath);
}
//response.writefile(filepath)
Response.End();
}
I do not know how to achieve to download file from server using web method. I tried something like this. I passed data and file name from angularJS to my web method, it creates excel file and upload in server. after completion of file creation and upload in server i returned url to another webform on success call to my JS function. From there I tried to open new web form where i am trying to implement code to download file. But how would my code will know which life to download since there could be multiple file presented. how so i pass fileName as well so that i could identified the file to download. Please check my code and let me know what to change and what to do ? or anyother way to achieve this. Thank you.
What I have tried:
[WebMethod] public static string ExportExcel(List<Student> students, string fileName) { ListtoDataTableConverter converter = new ListtoDataTableConverter(); DataTable dt = converter.ToDataTable(students); DataSet ds = new DataSet(); ds.Tables.Add(dt); string FilePath = fileLocation + fileName + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx"; ; DataSetToExcel.ExportDataSet(FilePath, ds); HttpContext.Current.Response.ContentType = "application/octet-stream"; HttpContext.Current.Response.AppendHeader("Content-Disposition", "filename=" + Path.GetFileName(FilePath)); return JsonConvert.SerializeObject(new { Success = true, redirectUrl = VirtualPathUtility.ToAbsolute("~/DownloadExcelForm.aspx") }); } Javascript: $scope.SendFile = function (filteredItems) { var xlFile = $scope.xlFilename; var students = []; students = filteredItems ; $http({ method: "POST", url: "ReportStudent.aspx/ExportExcel", data: { students: students, fileName: xlFile }, contentType: "application/json", dataType: "json" }).then(function (response) { var responsedata = JSON.parse(response.data.d); window.location.href = responsedata.redirectUrl; }); }; Webform Pageload: protected void Page_Load(object sender, EventArgs e) { string filepath = ""; Response.ContentType = ContentType; // Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(FilePath)); how to pass this file path ???? Response.TransmitFile(FilePath); Response.Flush(); System.Threading.Thread.Sleep(1000); System.Threading.Thread.Sleep(1000); if (File.Exists(filepath)) { File.Delete(filepath); } //response.writefile(filepath) Response.End(); }
解决方案
scope.SendFile = function (filteredItems) { var xlFile =
scope.xlFilename; var students = []; students = filteredItems ;
http({ method: "POST", url: "ReportStudent.aspx/ExportExcel", data: { students: students, fileName: xlFile }, contentType: "application/json", dataType: "json" }).then(function (response) { var responsedata = JSON.parse(response.data.d); window.location.href = responsedata.redirectUrl; }); }; Webform Pageload: protected void Page_Load(object sender, EventArgs e) { string filepath = ""; Response.ContentType = ContentType; // Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(FilePath)); how to pass this file path ???? Response.TransmitFile(FilePath); Response.Flush(); System.Threading.Thread.Sleep(1000); System.Threading.Thread.Sleep(1000); if (File.Exists(filepath)) { File.Delete(filepath); } //response.writefile(filepath) Response.End(); }
这篇关于如何在Web方法中从服务器下载文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文