Скачать файл по ссылке URL - PullRequest
0 голосов
/ 11 июня 2018

У меня есть абсолютный URL-адрес файла.

let fileUrl="https://xyz.blob.core.windows.net/aggregator/merchant/docs/45.txt?st=2018-06-11T10%3A09%3A43Z&se=2018-06-12T10%3A09%3A43Z&sp=r&sv=2017-04-17&sr=c&sig=ugiw0CuNXr0".

При нажатии кнопки этот файл должен быть загружен.

<button onClick={()=> {}>Download</button>

Как этого добиться с помощьюactjs?

Ответы [ 5 ]

0 голосов
/ 11 июня 2018

Хорошо, если быть точным, вы можете выполнить следующие шаги (это в java) 1. Написать новый API, который читает файл в ByteArrayOutputStream и установить правильный тип ответа (имя файла и путь будут пересчитаны клиентом) Например:

ByteArrayOutputStream baos = dao.readFIle(filename, filepath);

    String filename = filename+"."+fileextension;
    response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
    response.setContentType("application/zip");
        response.getOutputStream().write(baos.toByteArray());
        response.flushBuffer();
        baos.close();
Вызовите этот клиент формы API, отправив имя файла и путь в качестве атрибутов
0 голосов
/ 11 июня 2018

Делай так,

<a href={fileUrl}><button>Download</button></a>
0 голосов
/ 11 июня 2018

Лучшим способом было бы не делать это программно:

<a href={fileUrl} download>
  Download
</a>

Если вы хотите пойти темным путем, чтобы сделать его совместимым с большим количеством браузеров, вам нужно получить файл через ajax, создайтеblob, создайте URL-адрес из BLOB-объекта, создайте элемент привязки и назначьте URL-адрес BLOB-объекта, а затем щелкните его.

Или, как говорит @Quentin, если перекрестный источник заблокирован, то я бы предпочел, чтобы проксифайл через ваш сервер в том же домене и по-прежнему использовать атрибут загрузки href="/api/fileproxy?url=http://....".

0 голосов
/ 11 июня 2018

использовать window.open (fileUrl) - загрузит;

0 голосов
/ 11 июня 2018

Просто ссылка на него.

<a href={fileUrl}>Download</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...