Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Изменить тип загрузки файла (https://javascript.ru/forum/css-html/51764-izmenit-tip-zagruzki-fajjla.html)

desperado 18.11.2014 19:39

Изменить тип загрузки файла
 
Всем привет, подскажите плз такой глупый момент:

Есть код:

_addEventListner: function() {
        var that = this,
            audioInput = document.getElementById('uploadedFile'),
            dropContainer = document.getElementsByTagName("canvas")[0];
        //listen the file upload
        audioInput.onchange = function() {
            //the if statement fixes the file selction cancle, because the onchange will trigger even the file selection been canceled
            if (audioInput.files.length !== 0) {
                //only process the first file
                that.file = audioInput.files[0];
                that.fileName = that.file.name;
                if (that.status === 1) {
                    //the sound is still playing but we upload another file, so set the forceStop flag to true
                    that.forceStop = true;
                };
                document.getElementById('fileWrapper').style.opacity = 1;
                that._updateInfo('Uploading', true);
                //once the file is ready,start the visualizer
                that._start();
            };
        };


на странице с инпут тайп file и id='uploadedFile' выбирается файл и попадает в "that.file"

как мне изменить код так, что бы не выбирался файл с компьютера юзера, т.е. не с поля input
а с прямого урла в инете, например "http://site.ru/new-file.pdf"

danik.js 19.11.2014 09:04

desperado, данный код выгружает файл с компьютера клиента на сервер. А вот то, что ты просишь - это скачивание файла твоим сервером с другого сервера. Браузер клиента тут будет лишним звеном, понимаешь?
У тебя PHP на сервере? Тогда гугли curl download file. В зависимости от настроек, может сработать и просто функция copy(source, destination)

desperado 19.11.2014 11:29

Цитата:

Сообщение от danik.js (Сообщение 341705)
desperado, данный код выгружает файл с компьютера клиента на сервер. А вот то, что ты просишь - это скачивание файла твоим сервером с другого сервера. Браузер клиента тут будет лишним звеном, понимаешь?
У тебя PHP на сервере? Тогда гугли curl download file. В зависимости от настроек, может сработать и просто функция copy(source, destination)

браузер тут не лишнее звено, он потом показывает, что скрипт делает с этим mp3 файлом :)

как быть...в php лезть не вариант.

Тут проблема в том, что юзеру (в браузер) мне надо вывести файл с сервера, урл которого приходит например в респонсе от сервера или в json, не важно. Вот что мне нужно.

danik.js 19.11.2014 12:26

Цитата:

Сообщение от desperado
он потом показывает, что скрипт делает с этим mp3 файлом

Какой скрипт? Клиентский или серверный?
Файл лежит на том же сервере или на чужом?

desperado 19.11.2014 12:35

Цитата:

Сообщение от danik.js (Сообщение 341718)
Какой скрипт? Клиентский или серверный?
Файл лежит на том же сервере или на чужом?

Клиентский скрипт конечно.
Файл лежит на другом сервере.

danik.js 19.11.2014 15:08

Цитата:

Сообщение от desperado
Файл лежит на другом сервере.

Ну тогда ты не сможешь получить его из браузера через асинхронный запрос. Придется проксировать своим сервером.

desperado 19.11.2014 15:18

Цитата:

Сообщение от danik.js (Сообщение 341757)
Ну тогда ты не сможешь получить его из браузера через асинхронный запрос. Придется проксировать своим сервером.

да все проксируется, сам факт...как мне отдать этому скрипту файл по
ссылке, что бы потом сделался объект с него.

Я написал вам в ЛС, там скрипт. Может будет интересно...:)
помогите плз.

Яростный Меч 19.11.2014 20:08

Цитата:

Сообщение от desperado
как мне отдать этому скрипту файл по
ссылке, что бы потом сделался объект с него.

можно получить этот файл с помощью XMLHttpRequest, у которого выставить responseType="blob". Разумеется, если тот другой сервер выставит специальный заголовок ответа, разрешающий кроссдоменный запрос. А ведь может и не выставить.

Ну а если потом ты собираешься этот файл отправить как есть прямо к себе на сервер (ведь это задумано?), то всё-таки лучше серверным скриптом его и забрать. Почему тебе такой вариант не нравится, пока что непонятно.

danik.js 20.11.2014 06:58

Цитата:

Сообщение от Яростный Меч
можно получить этот файл с помощью XMLHttpRequest

Мы так с ним и сделали. Работает, но только когда полностью загрузит файл. А требуется прогрессивное воспроизведение по мере загрузки.

Цитата:

Сообщение от Яростный Меч
Ну а если потом ты собираешься этот файл отправить как есть прямо к себе на сервер (ведь это задумано?)

Нет. У него плеер на странице. Со спектральным анализатором.

Второй вариант - использовать вместо XHR непосредственно элемент <audio>.
Но в файрфоксе выдает тишину из-за CORS (юзается createMediaElementSource). А Safari чего-то не хватает для визуализации.


Часовой пояс GMT +3, время: 03:18.