2015-03-12 5 views
0

Я новичок в javascript. Я сделал программу python для загрузки файлов, и в случае сбоя соединения программа может возобновить загрузку файла. Но не работает в моем колледже из-за прокси-сервера, который не позволяет мне делать подключения из другой программы, кроме веб-браузера.Частично загружать файл с помощью javascript

Дело в том, что я не могу загрузить файлы из firefox, например, потому что через некоторое время соединение падает, поэтому я собираюсь сделать то же самое, что и в python, но с javascript.

Я потратил неделю на то, чтобы найти способ частично загрузить файл и сохранить его в переменной. например ... Если у меня есть URL = http: //www.example.com/blabla/movie.mkv, так как я могу создать соединение или загрузить 128KB куски, например? затем отправьте его в файл.

И ... Как я могу продолжить загрузку с некоторого байта до конца? (Например, добавить заголовок Range=1024-)

Я попытался с XMLHttpRequest, но я не могу загрузить файлы в двух разных доменах (CORS)

+0

Вы можете подделать ваш пользовательский агент скрипта Python, чтобы прокси-сервер рассматривал его как запрос веб-браузера. – Lithy

ответ

0

Я думаю, вы не могли бы сделать это с помощью JavaScript, из-за правил CORS.

На самом деле вы можете отключить эти правила при написании кода для Firefox дополнения для примера (Firefox SDK)

Но сценарий Python может подменить его агент пользователя, так что прокси-сервер рассматривает его как обычный браузер.

Например, используя очень хорошо request library (но любая библиотека HTTP может сделать это):

import requests 

r = requests.get('http://www.wikipedia.org/', headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0'}) 
+0

Я использовал библиотеку запросов в моей программе python, и я тоже это пробовал ... но это не сработало. :/ – user3725061

+0

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

0

Ну, если CORS является единственной проблемой вы столкнулись, вы можете использовать jsonp, чтобы сделать запрос.

Также для продолжения до конца вы можете добавить range header от byte до -. См. here или вы можете обратиться к заголовку ответа content-length, чтобы получить размер файла.

Смежные вопросы