首頁 > php教程 > PHP源码 > @apiDescription 批量下载

@apiDescription 批量下载

WBOY
發布: 2016-07-06 13:28:33
原創
1137 人瀏覽過
跳至 [1] [全屏预览]
    public function download()
    {
        $user = \Auth::user();
        //验证字段
        $request = array_filter($this->request->input());
        array_walk($request, function (&$value, $key) {
            if (is_array($value)) {
                $value = array_filter($value);
            }
        });

        $validator = \Validator::make($request, [
            'attachment_ids' => 'required|array|min:1',
        ]);

        if ($validator->fails()) {
            return $this->errorBadRequest($validator->messages()->all());
        }

        $attachmentIds = $this->request->get('attachment_ids');

        $attachments = Attachment::whereIn('id', $attachmentIds)->get();

        if (!$attachments->count()) {
            return $this->response->errorNotFound();
        }

        if ($attachments->count() == 1) {
            $attachment = $attachments->first();

            if (!$attachment->allowDownload($user)) {
                return $this->response->errorForbidden();
            }

            return response()->download(public_path($attachment->relative_path));
        } else {
            $zip = new \ZipArchive();
            $zipFile = storage_path('app/cache/' . date('Ymdhis') . uniqid() . '.zip');

            $zip->open($zipFile, \ZIPARCHIVE::CREATE);

            foreach ($attachments as $attachment) {
                if (!$attachment->allowDownload($user)) {
                    continue;
                }

                $filename = basename($attachment->relative_path);

                $zip->addFile($attachment->relative_path, $filename);
            }
            $zip->close();

            return response()->download($zipFile);
        }
    }
登入後複製
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板