我需要在單擊某些文本時下載特定文件。我希望典型的「另存爲...」對話框可以選擇我要保存文件的位置,但它不會出現。請求和響應是確定的。使用FileResult保存具有提示「另存爲...」的文件
請求/響應報頭
GET /測量/ GetSurveyFile調查= 1085 & surveyFileType = 2 HTTP/1.1
主機:?本地主機:50518
連接:保活用戶代理:Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/44.0.2403.107 Safari瀏覽器/ 537.36 OPR/31.0.1889.99
接受:/
X-要求 - 由於:XMLHttpRequest的
================ ======
HTTP/1.1 200 OK
緩存控制:私人
內容類型:應用/八位字節流
服務器:IIS/8.0
X-AspNetMvc-版本:5.2
內容處置:附件;文件名= 「1052__1183__1291__Variable部首Definition.txt」
X-ASPNET-版本:4.0.30319
X-SourceFiles:????= UTF-8乙UzpcVlNTb3VyY2VcUHJvamVrdGVcTU1JXGJmdWVudGVzXE1NSVxNaW5kc2hhcmUuTU1JXE1NSVxTdXJ2ZXlcR2V0U3VydmV5RmlsZQ == =
持久-AUTH :真
X-已啓動方式:ASP.NET
日期:星期一,2015年8月17日14時21分48秒GMT
的Content-Length:333
我的代碼:
的Javascript
function getfile(filetype) {
var SurveyId = $('#SurveyID').val();
var url = '/Survey/GetSurveyFile';
$.ajax({
type: 'GET',
url: url,
data: { survey: SurveyId, surveyFileType: filetype },
success: function (result) {
// ?
},
error: function (result) {
// handle errors
location.href = "/Home/"
}
});
}
控制器
public FileResult GetSurveyFile(string survey, string surveyFileType)
{
try
{
var tmpSurvey = EntityModelDataProvider.GetSurveyByID(int.Parse(survey));
var tmpSurveyFileTypes = EntityModelDataProvider.GetSurveyFileTypes();
var tmpSurveyFileType = tmpSurveyFileTypes.FirstOrDefault(_sft => _sft.SurveyFile_Type_Id == int.Parse(surveyFileType));
var tmpFile = EntityModelDataProvider.GetSurveyFilesBySurveyAndType(tmpSurvey.Survey_PK, tmpSurveyFileType.SurveyFile_Type_PK);
if (tmpFile != null)
{
byte[] fileBytes = tmpFile.SurveyFile;
string fileName = tmpFile.SurveyFile_Name;
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
else
throw new Exception("File not found!");
}
catch (Exception ex)
{
throw ex;
}
}
任何想法我怎麼能得到所需的行爲?
如果您製作@ Html.ActionLink(「Save as ...」,「GetSurveyFile」,「Survey」),該怎麼辦?我只是不明白你爲什麼需要JavaScript。 – kipwoker
我不想創建鏈接。這就是爲什麼我寫了「點擊一些文字」。 – blfuentes