reactjs - 如何通过反应将视频上传到 laravel 存储?
问题描述
因此,很容易找到如何通过 react axios 将图像上传到 laravel 存储的方法,但我一直在努力寻找上传视频的方法。所以这是我想知道的:
1) 我的 jsx 表单应该是什么样子?2) 我的 axios 请求应该是什么样子?3)我的控制器的功能应该如何?
另外,我知道为了上传多个文件,应该有一些更复杂的逻辑发生,所以我想举两个例子:第一个关于如何一次上传多个视频 第二个关于如何上传一个视频
解决方案
您可以使用FileReader Javascript API上传视频,该API可以在您的 ReactJS 组件中使用,然后在 Laravel 中几乎与您保存图像(Laravel 文件存储)相同。
1)你的jsx只需要有一些启用了多个属性的输入文件
<input type="file" name="the-name" multiple>
然后使用一个函数,您可以获得一组文件,在本例中为视频。阅读所有视频后,您可以将其添加到反应状态变量中。
// ...React component
handleInputChange = (e)=>{
// e.target.files is an array of files
let videos = [];
// Read each video from the input
e.target.files.foreach((file, index)=>{
var reader = new FileReader();
reader.onload = ()=>{
// add the file to the array
videos.push(reader.result);
}
reader.readAsDataURL(file);
});
this.setState({
videos: videos
});
}
2)您的 axios 请求现在应该如下所示
axios.post(url, {
videos: this.state.videos
}).then(...);
3) 毕竟,在您的 Laravel 控制器中,您将拥有一个数据 uri 视频数组,因此您必须使用 php 函数file_get_contents()获取每个视频数据。
例子:
public function uploadVideos(Request $request){
$videos = $request->input('videos');
foreach($videos as $key => $v){
// Get the video data
$video = file_get_contents($v);
// Save the video to the local Laravel disk
Storage::disk('local')->put('name of the video', $video);
}
}
注意 使用此示例,您可以上传多个或单个视频文件。
希望这可以帮到你。
推荐阅读
- node.js - 通过节点(护照)身份验证将 OAuth 用户数据传回 React
- php - 多维数组的关联数组
- sql - 可以使用 Postgresql 中的连接查询所有相关的子查询吗?
- python - 用不同 DataFrame 中包含的值填充 NaN 值
- python - 将数据发送到python烧瓶中的html仪表板,同时在函数参数中有字典
- android - android 是否可以对我使用 StorageAccessFramework 创建的纯文本文件进行写保护?
- assembly - 我是 ARM 汇编语言的新手,你能帮忙解释一下为什么我没有在正确的寄存器中得到正确的摄氏度平均值吗?
- assembly - 在创建堆栈帧之前或之后推送寄存器有什么区别吗?
- c# - 如何将 URL 重写到 .NET Core 中的另一个域?
- python - 如何在不同的行上获得随机选择的结果?