Я пытаюсь создать в asp.net 2,0 веб-службы, чтобы загрузить файл (всплывающее окно с Открыть или Сохранить файл), таким образом:Загрузить файл через веб-службу и jquery?
$.ajax({
type: "POST",
url: "webservice.asmx/download",
data: "{}",
contentType: "application/json; charset=utf-8",
success: function (res) {
console.log("donwloaded");
}
});
А в «WebService. ASMX»
[WebMethod()]
public byte[] DownloadFile(string FName)
{
System.IO.FileStream fs1 = null;
fs1 = System.IO.File.Open(FName, FileMode.Open, FileAccess.Read);
byte[] b1 = new byte[fs1.Length];
fs1.Read(b1, 0, (int)fs1.Length);
fs1.Close();
return b1;
}
[WebMethod]
public void download()
{
string filename = "test.txt";
string path = "C:\\test.txt";
byte[] ls1 = DownloadFile(path);
HttpResponse response = Context.Response;
response.Clear();
response.BufferOutput = true;
response.ContentType = "application/octet-stream";
response.ContentEncoding = Encoding.UTF8;
response.AppendHeader("content-disposition", "attachment; filename=" + filename);
response.BinaryWrite(ls1);
response.Flush();
response.Close();
}
Таким образом, я вижу содержимое файла (я не могу загрузить файл Whith всплывающего окна).
Где я ошибаюсь? Можно ли сделать это?
заранее спасибо
Вам нужно будет открыть новое окно и вызвать эту часть ajax в этом новом окне. –
Я думаю, что тип контента отличается для файла, чтобы он отображался как загружаемый. –
Извините, но я не понимаю, что вы имеете в виду. Фактически, вызов ajax находится в событии click на странице aspx .... (для «всплывающего окна» я имею в виду окно подтверждения по умолчанию в браузере) – Webman