Laravel文件上传

来源:互联网 发布:求生之路2不用网络 编辑:程序博客网 时间:2024/05/17 11:07
use Storage;use Illuminate\Support\Facades\File;

文件上传实例:

    /**     * 上传录音文件     * @desc 做练习的时候,上传录音文件,post方式     * @param recording file Y Y 上传文件name值,类似表单提交的时候name和value     * @return data.file_path string 上传的文件保存的路径     * @return data.status_code int 上传的文件状态码,200成功,其他均为失败     */    public function moveSoundRecording(Request $request) {        $this->check_user($request->input('uid'));        if ($request->isMethod('post')) {            $file = $request->file('recording');            // 文件是否上传成功            if ($file->isValid()) {                // 获取文件相关信息                $originalName = $file->getClientOriginalName(); // 文件原名                $ext = $file->getClientOriginalExtension(); // 扩展名                $realPath = $file->getRealPath(); //临时文件的绝对路径                $type = $file->getClientMimeType(); // audio/wave                // 上传文件                $filename = date('YmdH_i_s') . '_' . uniqid() . '.' . $ext;                //获取文件前缀                $storagePath = Storage::disk('answers')->getDriver()->getAdapter()->getPathPrefix();                //设置二级目录                $sub_path = 'recording' . DIRECTORY_SEPARATOR . 'level' . DIRECTORY_SEPARATOR;                $prefix_path = 'http://' . $_SERVER['SERVER_NAME'] . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'answers' . DIRECTORY_SEPARATOR;                // 使用我们新建的uploads本地存储空间(目录)                $bool = Storage::disk('answers')->put($sub_path . $filename, file_get_contents($realPath));                //获取文件真实路径                $realPath = $prefix_path . $sub_path . $filename;                if ($bool) {                    return $this->responseSuccess(['file_path' => $realPath]);                } else {                    return $this->responseError('文件上传出错!');                }            }        }    }

判断文件夹是否存在,这个地方官方文档有问题:

   if (!is_dir($new_subpath)) {    File::makeDirectory($new_subpath);   }