Как загрузить файл с Azure Blob через url [duplicate]

Конечно, есть много таких подходов, как синхронный запрос, обещание, но из моего опыта я думаю, что вы должны использовать подход обратного вызова. Естественно, что асинхронное поведение Javascript. Итак, ваш фрагмент кода можно переписать немного иначе:

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            myCallback(response);
        }
    });

    return result;
}

function myCallback(response) {
    // Does something.
}
0
задан Paul 17 December 2013 в 01:34
поделиться

3 ответа

Если я правильно понимаю, вы хотите, чтобы ваши пользователи увидели приглашение Open/Save As, когда они нажимают на URL SAS.

Предполагая, что мое понимание верное, недавно Windows Azure Storage анонсировала некоторые улучшения. Одним из улучшений является добавление свойства Content-Disposition для blob, которое позволило бы этому приглашению Open/Save As показать, когда пользователь нажимает ссылку SAS для blob. С помощью Content-Disposition у вас есть 2 варианта:

  1. Установите Content-Disposition как свойство blob: В этом случае, когда пользователь нажимает на ссылку SAS, им будет предложено сохранить файл. Но в этом случае они всегда будут запрашиваться, так что ссылка SAS или нет, пользователь никогда не сможет увидеть документ в строке в браузере. Вы можете найти эту ссылку полезной для этого: http://msdn.microsoft.com/en-us/library/windowsazure/ee691966.aspx .
  2. Установите Content-Disposition как часть URL SAS: в этом случае пользователь будет запрашиваться только при нажатии на URL SAS, который содержит Content-Disposition. Вы можете найти эту ссылку полезной для этого: http://msdn.microsoft.com/en-us/library/windowsazure/dn140255.aspx .

So если у вас есть png-файл. В варианте 1 он никогда не будет отображаться встроенным в браузере, он будет загружен на клиентской машине и открыт в зарегистрированном средстве просмотра изображений на вашем компьютере. В варианте 2, если Content-Disposition установлен в URL SAS, файл изображения будет загружен на клиентском компьютере и открыт в зарегистрированном средстве просмотра изображений на вашем компьютере, иначе он будет отображаться непосредственно в браузере.

Если вы используете .Net, то в библиотеке Client Storage 3.0.0.0 есть поддержка этой функции, поэтому вам не нужно писать обертку вокруг REST API (но я думаю, что вы используете PHP ... из своего предыдущего вопроса о CORS:)).

1
ответ дан Gaurav Mantri 5 September 2018 в 08:59
поделиться

Чтобы избежать перезагрузки / перенаправления, я использую эту библиотеку:

http://jqueryfiledownload.apphb.com/

Если вы нужна помощь для его настройки : http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/

Но если вы хотите перенаправить пользователя, вы можете использовать базовую вещь, например:

window.location.href = "http://stackoverflow.com/file.pdf";
1
ответ дан BaNz 5 September 2018 в 08:59
поделиться

То, как я это делал в прошлом, - это открыть скрытый iframe с URL-адресом для загрузки.

Что-то вдоль строк

var frame = document.createElement('iframe');
frame.src = url; // your Azure url
frame.style.display = 'none';
document.body.appendChild(frame);

Примечание. что вам нужно будет убедиться, что вы не пытаетесь сделать это на защищенной (https) странице с небезопасной загрузкой (http)

1
ответ дан jec006 5 September 2018 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: