使用 workerman 做的接口,上传100多KB的小文件没问题,上传127MB的文件,接口就立即返回错误,代码没报错,终端也没有任何输出,接口报错如下图:
本地php环境配置如下图:
public function uploadFile() {
$type = request($this->request->post(), 'type', 'string|required|min:3|max:20');
if ($type === 'importData') {
$linkId = request($this->request->post(), 'link_id', 'int|required|min:1');
$db = request($this->request->post(), 'db', 'string|required|min:1|max:30');
}
if (empty($this->request->file('file'))) {
return $this->echoJson('文件不能为空', 404);
}
$code = md5($this->user['id'] . getClientTimeNow() . rand(100, 9999));
$save = '/tmp/' . PROJECT . '.' . date('YmdHis') . '.' . $code;
if (!rename($this->request->file('file')[0]['tmp_name'], $save)) {
return $this->echoJson('保存文件失败', 404);
}
if ($type === 'importData') {
$result = ['file' => $save, 'link_id' => $linkId, 'db' => $db];
}
$this->{$type}($result);
}
ubuntu 20.04 workerman 4.1.16
上传的文件大小默认受限于 defaultMaxPackageSize,默认为10M。可以在 config/server.php 文件中通过修改 max_package_size 来更改这个默认值。
谢谢,确实,我只需要调大这一个参数的值就行,不过我用的是workerman,在Tcpconnection这个类里找到的这个变量,感觉有点不好的地方是啥提示都没有,希望作者大佬改进下,超过了这个值起码给个提示什么的。
另外我这个 127MB的文件,上传花了4.5分钟,本地环境,感觉有点慢。
你都127MB;做切片上传。10s搞定
怎么做切片上传
前端分片,后端合片
已根据 https://www.workerman.net/doc/workerman/tcp-connection/default-max-package-size.html 文档解决,谢谢。