天天看點

PHP UPLOAD 實作附件上傳

很早時候寫的一些 上傳功能,現在都換成 對象存儲 了,基本不用原生的了;

跨域上傳圖檔; php 附件上傳

備份一下:

<?
    /**
     * 上傳壓縮檔案
     */
    public function uploadzip()
    {
        // 擷取表單上傳檔案 例如上傳了001.jpg
        $file = request()->file('file');
        $path = 'uploads';
        // 移動到架構應用根目錄/uploads/ 目錄下
        $info = $file->validate(['size' => 20 * 1024 * 1024, 'ext' => 'zip,rar,7z'])->move($path);
        if ($info) {
            $name = $info->getInfo('name');
            $size = $info->getInfo('size');
            $ext = $info->getExtension();
            $fileurl = $path . '/' . $info->getSaveName();
            $data = [
                'content' => $fileurl,
                'name' => $name,
                'size' => $size,
                'ext' => $ext,
            ];
            $this->success('ok', '', $data);
        }
    }
    //删除附件
    public function deletezip()
    {
        $content = Request::post('content', '');
        $path = Env::get('root_path') . 'public/' . $content;
        if (file_exists($path)) {
            unlink($path);
            $this->success('操作成功');
        } else {
            $this->error('操作失敗' . $path);
        }
    }

    /**
     * 跨域上傳圖檔
     */
    public function cros_img()
    {
        // header('Access-Control-Allow-Origin: *'); 無限制
        // header('Access-Control-Allow-Origin: http://XXX.XXX.cn');
        // 允許跨域的origin白名單, 為空則允許所有origin跨域
        $allowOrigin = config('app.allow_origin');
        // 跨域通路的時候才會存在該字段
        $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
        // 有配置白名單且目前origin在白名單
        if (in_array($origin, $allowOrigin)) {
            header("Access-Control-Allow-Origin:" . $origin);
        }
        header('Access-Control-Allow-Methods: GET, POST');
        header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization');
        header('Access-Control-Allow-Credentials: true');
        // 擷取表單上傳檔案 例如上傳了001.jpg
        $file = request()->file('file');
        $path = 'uploads';
        // 移動到架構應用根目錄/uploads/ 目錄下
        $info = $file->validate(['size' => 5 * 1024 * 1024, 'ext' => 'jpeg,jpg,png,gif,bmp'])->move($path);
        if ($info) {
            // 成功上傳後 擷取上傳資訊
            // 輸出 jpg
            $ext = $info->getExtension();
            // 輸出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            $fileurl = $path . '/' . $info->getSaveName();
            $thumb  = getImgThumbUrl($fileurl);//生成縮略圖
            // 輸出 42a79759f284b767dfcb2a0197904287.jpg
            // echo $info->getFilename().'<br/>';
            $name = $info->getInfo('name');
            $size = $info->getInfo('size');
            $data = [
                'content' => $fileurl,
                'thumb' => $thumb?$thumb:'',
                'name' => $name,
                'size' => $size,
            ];
            return json(['code' => 1, 'msg' => '上傳成功!', 'data' => $data]);
        } else {
            // 上傳失敗擷取錯誤資訊
            return json(['code' => 0, 'msg' => '上傳失敗!' . $file->getError(), 'data' => '']);
        }
    }      

若有幫助到您,歡迎捐贈支援,您的支援是對我堅持最好的肯定(_)

你要保守你心,勝過保守一切。

繼續閱讀