Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2017, 13:42
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Собрать файл, полученный в ответе сервера
Добрый день. Есть вот такая история - я делаю запрос на сервер, в ответ получаю файл. Дальше мне нужно этот файл сохранить на устройство. Вопрос в том как это сделать.

Есть вот такой запрос:

var result = new XMLHttpRequest();
            
result.open('GET', 'http://dia.kvitka.club/api/result/file?api_token='+token+'&id=1382372&type=get');
result.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
result.send();

result.onload = function () {
        var data = this.responseText;

        console.log(data);
}


В результате запроса я получаю вот это: http://prntscr.com/gv46hs

То есть файл я получаю, но как дальше с ним работать? как преобразовать то что я получаю в готовый файл?

Буду очень благодарен за любую помощь
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2017, 14:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,257

Сообщение от smart-create
То есть файл я получаю, но как дальше с ним работать? как преобразовать то что я получаю в готовый файл?
Вот почитай...
Как сохранить данные в файл? Возможно такое на JavaScript?
Ответить с цитированием
  #3 (permalink)  
Старый 12.10.2017, 12:26
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

ksa, Большое спасибо, изучил эту тему. Но не совсем разобрался если честно. То есть грубо говоря там идет речь о том как создать информацию (например текстовую) и впихнуть ее в .txt

У меня же файл уже есть (на скриншоте), да ему плохо, его обработали с помощью base64 и запихнули в БД, а потом отдали мне. Но все же я получаю уже файл. Мне же не нужно брать все это и пихать в txt? или нужно?

Rise, Вам так же спасибо что откликнулись. Но вопрос в данном случае тот же. Использую эту библиотеку что мне нужно делать с моим "файлом", брать все и пихать в txt?

P.S. В придачу ко всему, файл который мне нужен это .pdf. Я уже пробовал (ради теста) скопировать то что мне приходит в ответе и вставить в txt, а потом изменить txt на pdf, но как и ожидалось в принципе вместо файла вылезла ошибка...

Буду благодарен если поможете разобраться в этих вопросах

Последний раз редактировалось smart-create, 12.10.2017 в 12:28.
Ответить с цитированием
  #4 (permalink)  
Старый 12.10.2017, 13:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,257

smart-create, дело в том, что клиентский скрип не имеет доступа к дискам компа.

Как вариант, можно отправить на страницу для скачивания этого файла с сервера...
Ответить с цитированием
  #5 (permalink)  
Старый 12.10.2017, 13:11
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

smart-create,

если надо просто сохранить этот твой файл в папку загрузок, то возможны варианты.

Для всех браузеров, кроме IE, можно просто создать ссылку, выставить ей атрибут download, а так же href="'http://dia.kvitka.club/api/result...", и отправить ей событие click. Без всяких аяксов и проч.

Для IE в любом случае придется загрузить через XMLHttpRequest. Только надо ему выставить responseType="blob" перед отправкой запроса, тогда в response будет blob, сразу готовый для передачи в вышеупомянутый FileSaver.js.


Назначение строки
result.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
остается неясным.
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2017, 12:20
Профессор
Отправить личное сообщение для smart-create Посмотреть профиль Найти все сообщения от smart-create
 
Регистрация: 25.10.2016
Сообщений: 157

Большое всем спасибо. Без Вас не разобрался бы)

Простота вот этого варианта "создать ссылку, выставить ей атрибут download, а так же href="'http://dia.kvitka.club/api/result..."",
от Alexandroppolus - удивила и обрадовала очень.

Еще раз спасибо!

Напоследок хотел уточнить кое какой момент относительно кодировки в которой я получаю свой ответ. На сколько я понимаю вся эту куча непонятных знаков - это проблемы с кодировкой (русские символы не отображаются). Вопрос следующий - как мне правильно прописать кодировку в запросе, что бы у меня читались русские буквы (мне это нужно для того что бы вытянуть название файла)
Ответить с цитированием
  #7 (permalink)  
Старый 16.10.2017, 13:14
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от smart-create
Простота вот этого варианта
вариант хорош не столько простотой, сколько экономичностью. Тут скачивание и сохранение происходит силами браузера, и скорее всего, "проточным" способом.

А блоб приходится сначала целиком загрузить в оперативу. Если файл весит несколько сот мб, то эта проблема может стать весьма ощутимой.

Сообщение от smart-create
Напоследок хотел уточнить кое какой момент относительно кодировки в которой я получаю свой ответ. На сколько я понимаю вся эту куча непонятных знаков - это проблемы с кодировкой (русские символы не отображаются). Вопрос следующий - как мне правильно прописать кодировку в запросе, что бы у меня читались русские буквы (мне это нужно для того что бы вытянуть название файла)
пдф - не текстовый файл.

посмотри, какие http-заголовки приходят в ответе "http://dia.kvitka.club/api/result...". Вдруг там уже есть 'Content-Disposition: attachment'? тогда можно использовать мой простой вариант, причем атрибут download вообще не понадобится.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить файл с сервера без перезагрузки нажав на крестик alex162341 jQuery 0 21.01.2015 22:36
AJAX, PERL, запись в файл и неожиданный ответ от сервера Jopses jQuery 3 28.02.2013 16:06
Проблема с json в ответе от сервера madkinadm ExtJS 3 16.05.2012 16:09
Как получить файл с сервера AJlekceu AJAX и COMET 1 02.11.2008 13:41
Как защитить файл js от скачивания с сервера? slon Общие вопросы Javascript 2 02.07.2008 01:14