Как загрузить файл из потока службы WCF?Jquery

Программирование на jquery
Ответить
Anonymous
 Как загрузить файл из потока службы WCF?

Сообщение Anonymous »

Я пытаюсь удаленно загрузить CSV-файл, вызвав службу WCF с помощью jQuery. Поскольку файл на самом деле не находится на сервере, я пытался вернуть его в виде потока. Поскольку я использую заголовок Content-Disposition, браузер клиента должен автоматически начать загрузку файла с заданным именем.

Мой метод службы WCF на C#:

Код: Выделить всё

[OperationContract()]
public Stream GetCsvFile(int id)
{
string s = ...;
WebOperationContext.Current.OutgoingResponse.ContentType = "text/csv";
WebOperationContext.Current.OutgoingResponse.Headers["Content-Disposition"] = "attachment; filename=\"file1.csv\"";
return GenerateStreamFromString(s);
}

public Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
Мой запрос jQuery AJAX:

Код: Выделить всё

$.ajax({
type: "POST",
url: serviceUrl,
cache: false,
data: data,
dataType: "text",
contentType: "application/json; charset=utf-8",
success: function() {
// TODO...
}
});
Этот запрос выполнен успешно! И я вижу в ответе правильные данные CSV. Однако он не инициирует фактическое действие «загрузки файла» в браузере (на данный момент тестируется в Chrome), а «file1.csv» не сохраняется на диске клиента.

В старой версии VB.NET того же приложения в коде программной части страницы .aspx работало следующее:

Код: Выделить всё

Response.Clear()
Response.ContentType = "text/csv"
Response.AddHeader("content-disposition", "attachment; filename="file1.csv")
Response.Write(s)
Response.End()
Это автоматически инициирует загрузку файла «file1.csv». Диалоговое окно «Сохранить как» даже не отобразится, файл просто загрузится сразу. Это было довольно круто.

Так почему же это не работает, когда я пытаюсь вызвать службу WCF с помощью jQuery?

Подробнее здесь: https://stackoverflow.com/questions/150 ... ice-stream
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»