Я случайно использую реакцию, но факт остается фактом: когда я размещаю простую страницу со входом для загрузки локального файла, если я console.log
фактический файл после его выбора, здесь что я получаю от консоли:Загрузка видеофайла без загрузки ввода
File {name: "myfile.mp4", lastModified: 1474084788000, lastModifiedDate: Fri Sep 16 2016 23:59:48 GMT-0400 (EDT), webkitRelativePath: "", size: 27828905…}
lastModified: 1474084788000
lastModifiedDate: Fri Sep 16 2016 23:59:48 GMT-0400 (EDT)
name: "myfile.mp4"
size: 27828905
type: "video/mp4"
webkitRelativePath: ""
__proto__: File
и поэтому файл загружает в video
теги и я могу смотреть. (Код ниже ...)
Затем, если я хочу загрузить тот же файл, но с жесткого кода полного пути, например: "file:///path/to/myfile.mp4"
, появляется ошибка This video file format is not supported.
, и я вернусь с консоли. тот же самый путь, который я ранее жестко закодировал.
Вопрос: как загрузить локальный файл с помощью жестко заданного пути вместо выбора файла из входного элемента?
OR
Как создать объектURL непосредственно с локального пути?
Я уже пробовал файл Blob
перед тем, как передать его функции URL.createObjectURL
, но если я не сделал что-то не так, это не сработало.
Рендер код функции:
render() {
return (
<div>
<input type="file" ref="input" onChange={this.upload} />
<video ref="video" type="video/mp4" controls loop autoPlay width="720"></video>
<div ref="message"></div>
</div>
);
}
Функции:
processs = (file) => {
let fileURL = URL.createObjectURL(file);
this.refs.video.src = fileURL;
}
playFile = (event) => {
let file = event.target.files[0];
console.log(file);
//check if video can be played
if(this.refs.video.canPlayType(file.type) != ""){
this.processs(file);
} else {
this.refs.message.innerHTML = "This video file format is not supported."
}
};
Что вы имеете в вид _ «загружать один и тот же файл, но из закодированного полного пути вместо» _ ? Установка '
В ответ, вместо передачи файла как 'const file = event.target.files [0]' из входного элемента, я просто создал 'this.state ({myfile:" file: /// fullpath/to/myfile.mp4 "})' в конструкторе и ссылайтесь на него как 'const file = this.state.myfile' –
Вы можете использовать' XMLHttpRequest() 'для запроса локального файла как' Blob' – guest271314