Загрузка файла Экстджса Аякса просит C# MVC

Я хочу, чтобы клиент загрузил файл, хранивший на моем db, когда нажато кнопка. Я отправляю этот ajax запрос и беру его от серверной стороны.

ЭКС-ТАДЖИКСКИЙ СОМОНИ:

downloadFile: function (a, b, c) {
    var feed_id =this.getMyfeedwindow().down('form').getComponent('FeedId').text;
    Ext.Ajax.request({
        url: '/Feed/Download',
        method: 'GET',
        params: {
            fileID: feed_id, //this.form.getComponent('file').value,
        },
        failure: function (response) {
            alert('failed  !');
        },
        success: function (response) {
            alert('success!');
        },
    });
},

тогда удовлетворите запросу с этим кодовым блоком.

C#:

 public void Download(string fileID){
    Response.ContentType = "application/force-download";
    Response.AddHeader("Content-Disposition", "attachment; Filename=\"Logo1.jpg\"");
    Response.BinaryWrite(data);
    Response.End();
 }

Когда я согласовал сеть с поджигателем, это кажется моей прибылью запроса успешно с этими параметрами.

Cache-Control   private
Content-Disposition attachment; filename="Logo1.jpg"
Content-Type    application/force-download
Date    Wed, 09 Jan 2013 12:51:54 GMT
Server  Microsoft-IIS/8.0
Transfer-Encoding   chunked
X-AspNet-Version    4.0.30319
X-AspNetMvc-Version 4.0
X-Powered-By    ASP.NET
X-SourceFiles   =?UTF-8?B?RTpcVXRrdUNhblxQcm9qZWN0c1xURlNcQlRPTVxCVE9NXEZlZWRcRG93bmxvYWQ=?=

Хотя это возвращается успешный, загрузка не начинается. Я прочитал много вопросов и статей, но в большинстве ответов говорится добавление, что заголовок загрузки силы решает проблему. Какую суть я упускаю? Спасибо.

5
nl ja de
Загрузка не начинается в серверной стороне? Я не мог заставить его начаться. Область ответа в Поджигателе кажется, что заполнился некоторыми данными, но нет никакой загрузки.
добавлено автор tkcn, источник
Что вы на самом деле спрашиваете здесь? It' s не ясный.
добавлено автор Liam, источник

2 ответы

Чтобы обращаться с Загрузкой, необходимо использовать одного из предоставленного помощника

  • Система. Сеть. MVC.FilePathResult
  • Система. Сеть. MVC.FileStreamResult
  • Система. Сеть. MVC.FileContentResult

Большинство раз я использую Систему. Сеть. MVC.FileStreamResult самостоятельно. Используйте его как

FileStreamResult result = new FileStreamResult(stream, contentType);
result.FileDownloadName = filename;//name of the downloaded file

Update Just some Infos based on your edit

Вы не можете начать загрузку, используя запрос XHR. Но есть по крайней мере два пути, как можно сделать это:

  • , Если путь к файлу - фиксация и вы знаете, что это установило top.location.href = "YourPath"; в укладчике успеха требования ajax. [Infos о <сильном>top.location.href]
  • , Если вы создаете файл на лету и хотите возвратить его, необходимо создать скрытый iframe и ввести форму в него, которые тогда выполняют запрос.
2
добавлено
спасибо, я уже использовал location.href., но хорошо изучить iframe выбор. спасибо. btw, если вы downvoted, позор вам. но если вы не сделали, позор мне: D
добавлено автор tkcn, источник
@tkcn я добавил некоторый дополнительный Infos о Filedownloads относительно требований AJAX к моему посту. Они могли бы заинтересовать вас.
добавлено автор sra, источник
@tkcn You' приветствие ре. И не я don' t. Но я недавно upvoted ваш ответ & вопрос;)
добавлено автор sra, источник
+1. Я использую Файл возвращения (фотография, "image/ jpg"); , где фотография - байт [] от базы данных.
добавлено автор A1rPun, источник

После некоторого поиска я нашел, что location.href делает то же самое и открывает диалоговое окно загрузки. Те же самые заголовки должны быть добавлены к ответу, прибывающему из сервера. Однако я все еще не знаю, почему другой подход не работает.

var feed_id = this.getMyfeedwindow().down('form').getComponent('FeedId').text;
location.href = '/Feed/Download?fileID=' + feed_id;

это решило мою проблему.

1
добавлено
возможно передать параметры как это.
добавлено автор tkcn, источник
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском