视频分片上传
class Upload extends Common
{
protected $chunk;
protected $chunks;
protected $savepath;
protected $filename;
protected $filesize;
public function __construct()
{
parent::__construct();
}
public function videoChunk()
{
set_time_limit(0);
ini_set('memory_limit', '1024M');
$this->chunk = input('chunk');
$this->chunks = input('chunks');
$this->savepath = '/data/video/' . date('Ymd');
$this->filename = input('name');
$this->filesize = input('filesize');
if ($this->filesize > (1 * 1024 * 1204 * 1024)) {
response(401, '请不要上传超过 1G 的视频!');
}
$tmpname = $this->filename . '.tmp' . $this->chunk;
$video = request()->file('video');
if ($video) {
$info = $video->move($this->savepath, $tmpname);
if ($this->chunk == ($this->chunks - 1)) {
$blob = '';
for($i=0; $i< $this->chunks; $i++){
$blob .= file_get_contents($this->savepath. '/' . $this->filename . '.tmp' . $i);
}
file_put_contents($this->savepath . '/' . $this->filename, $blob);
for ($i=0; $i< $this->chunks; $i++) {
@unlink($this->savepath . '/' . $this->filename . '.tmp' . $i);
}
response(200, '上传成功!', ['path' => $this->savepath . '/' . $this->filename]);
}
}
}
}