jwplayer, вопрос по javascript - PullRequest
2 голосов
/ 01 июля 2011

Я отображаю окно открытия файла, чтобы пользователь мог выбрать файл на своем компьютере:

<input type="file" id="upload_input"/>

но когда я получаю файл, который пользователь выбрал в Javascript (см. Код ниже), который я считаю «безопасным», так как javascript выполняется на стороне клиента - все, что я получаю, это файл, а не полный путь - несмотря на тот факт, что полный путь и имя файла появляются в поле рядом с кнопкой «Обзор», которое всегда дает вам input type = file .

Другими словами, пользователь выбирает файл, расположенный на его компьютере, например, по адресу c: /aFolder/thefile.rtf. Затем после выбора этого файла в поле рядом с кнопкой «Обзор» появится полный путь: c: /aFolder/thefile.rtf

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

filename = document.getElementById('upload_input').value;
alert("The selected file name is " + filename);

Почему элемент управления input type = file даже потрудился показать пользователю полный путь, если вы не можете получить его программно? В конце концов, все это происходит на стороне клиента, это не похоже на полный путь на сервере.

Еще один вопрос: я использую приведенное выше имя файла и создаю полный путь к этому файлу, только ради работы моего кода JWplayer. Полный путь, который я создаю для разработки, здесь временный.

Другими словами, когда я получаю имя файла выше, я делаю это:

vidFname = ("c:/xampp/htdocs/theWebsite/aFolder/" + filename);
alert("The full path is: " + vidFname);

и затем я пытаюсь воспроизвести видео в Jwplayer:

playlist = { file: vidFname };

theJwPlayer().load(playlist);
theJwPlayer().play(true);

но Jwplayer выдает мне «Отказано в доступе или файл не найден».

Вот что мне пришлось изменить, чтобы заставить это работать:

vidFname = ("http://localhost/theWebsite/aFolder/" + filename);
alert("The full path is: " + vidFname);
playlist = { file: vidFname };
theJwPlayer().load(playlist);
theJwPlayer().play(true);

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

ПРИМЕЧАНИЕ. Я не думаю, что это проблема с «разрешениями для папок», поскольку я могу воспроизводить один и тот же файл в одном месте с другим приложением .FLV player (автономным) на моем компьютере. Так что не мои права доступа к папке в моем c: / xampp заставляют Jwplayer сказать «разрешение запрещено или файл не найден».

Почему Jwplayer (или это Javascript ..?) Не позволяет мне использовать полный путь к файлу при вызове jwplayer (). load ()?

В конце концов, я использую 'theJwPlayer' в Javascript , который работает на клиентском компьютере, и файл тоже на клиентском компьютере, так что это не проблема безопасности.

Или я что-то здесь упускаю? ПРИМЕЧАНИЕ: Я полностью извиняюсь, если этот вопрос неосведомлен, но на моем текущем уровне веб-программирования, который вы, возможно, уже давно прошли, это озадачивает, ОСОБЕННО jwplayer (). Load () не работает с полным именем пути.

1 Ответ

2 голосов
/ 01 июля 2011

Браузеры не показывают фактические пути к файлам в коде JavaScript. Это вопрос безопасности. Вы не сможете получить доступ к локальным файлам без использования (новых, доступных только в новых браузерах) API-интерфейсов обработки файлов HTML5, и даже они не дадут вам полных путей к файлам.

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

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

...