
Laravel
标题:Dropzone 后端
Laravel 中没有有效的 MIME 类型?Dropzone 是一个非常流行的前端文件上传库,可以方便地实现拖拽上传功能。然而,在使用 Dropzone 的同时,我们经常会遇到一个问题:Dropzone 后端
Laravel 中没有有效的 MIME 类型。
问题的产生当我们使用 Dropzone 进行文件上传时,前端会将文件的 MIME 类型传递给后端。而后端
Laravel 框架在处理文件上传时,会根据文件的 MIME 类型来判断文件类型的合法性。如果文件的 MIME 类型在
Laravel 的 MIME 类型白名单中不存在,那么
Laravel 将会判定该文件类型为无效。
解决方案为了解决 Dropzone 后端
Laravel 中没有有效的 MIME 类型的问题,我们需要对
Laravel 的 MIME 类型白名单进行扩展。下面是一个示例代码,展示了如何在
Laravel 中扩展 MIME 类型白名单:
php// 在 app/Providers/AppServiceProvider.
php 中的 boot 方法中添加以下代码public function boot(){ $mimes = [ 'custom/mime-type', ]; \Illuminate\Support\Fa
CADes\Response::macro('filetype', function ($type, $content) { return response($content, 200, [ 'Content-Type' => $type, ]); }); \Illuminate\Support\Fa
CADes\Response::macro('file', function ($content, $filename) { return response($content, 200, [ 'Content-Disposition' => 'attachment; filename="' . $filename . '"', ]); }); \Illuminate\Support\Fa
CADes\Response::macro('stream', function ($callback, $filename) { $response = \Illuminate\Support\Fa
CADes\Response::stream($callback, 200, [ 'Content-Disposition' => 'attachment; filename="' . $filename . '"', ]); return $response; }); \Illuminate\Support\Fa
CADes\Response::macro('download', function ($filename, $name = null) { return \Illuminate\Support\Fa
CADes\Response::download($filename, $name); }); \Illuminate\Support\Fa
CADes\Response::macro('attachment', function ($filename, $name = null, $headers = []) { return \Illuminate\Support\Fa
CADes\Response::download($filename, $name, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('inline', function ($filename, $name = null, $headers = []) { return \Illuminate\Support\Fa
CADes\Response::download($filename, $name, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('
JSon', function ($data = [], $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon($data, $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('
JSonp', function ($callback, $data = [], $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSonp($callback, $data, $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('
XML', function ($data = [], $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
XML($data, $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('csv', function ($data = [], $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::csv($data, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('pdf', function ($filename, $data = [], $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::pdf($filename, $data, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('zip', function ($filename, $files = [], $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::zip($filename, $files, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('
excel', function ($filename, $data = [], $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::
excel($filename, $data, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('
word', function ($filename, $data = [], $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::
word($filename, $data, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('ppt', function ($filename, $data = [], $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::ppt($filename, $data, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('image', function ($content, $status = 200, array $headers = [], $options = []) { return \Illuminate\Support\Fa
CADes\Response::image($content, $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('streamed', function ($callback, $status = 200, array $headers = []) { return \Illuminate\Support\Fa
CADes\Response::streamed($callback, $status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('redirect', function ($url, $status = 302, $headers = [], $secure = null) { return \Illuminate\Support\Fa
CADes\Response::redirect($url, $status, $headers, $secure); }); \Illuminate\Support\Fa
CADes\Response::macro('back', function ($status = 302, $headers = []) { return \Illuminate\Support\Fa
CADes\Response::back($status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('refresh', function ($status = 302, $headers = []) { return \Illuminate\Support\Fa
CADes\Response::refresh($status, $headers); }); \Illuminate\Support\Fa
CADes\Response::macro('
JSonOr
JSonp', function ($data = [], $status = 200, array $headers = [], $options = 0) { $request = \Illuminate\Support\Fa
CADes\Request::instance(); if ($request->has('callback')) { return \Illuminate\Support\Fa
CADes\Response::
JSonp($request->input('callback'), $data, $status, $headers, $options); } else { return \Illuminate\Support\Fa
CADes\Response::
JSon($data, $status, $headers, $options); } }); \Illuminate\Support\Fa
CADes\Response::macro('page', function ($view, $data = [], $mergeData = []) { return \Illuminate\Support\Fa
CADes\Response::view($view, $data, $mergeData); }); \Illuminate\Support\Fa
CADes\Response::macro('template', function ($view, $data = [], $mergeData = []) { return \Illuminate\Support\Fa
CADes\Response::view($view, $data, $mergeData); }); \Illuminate\Support\Fa
CADes\Response::macro('error', function ($message = 'Error', $status = 400, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon(['error' => $message], $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('success', function ($data = [], $message = 'Success', $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon(['message' => $message, 'data' => $data], $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('message', function ($message = 'Success', $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon(['message' => $message], $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('
JSonWithErrorCode', function ($code, $message = 'Error', $status = 400, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon(['error' => $message, 'code' => $code], $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('
JSonWithSuccessCode', function ($code, $data = [], $message = 'Success', $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon(['message' => $message, 'data' => $data, 'code' => $code], $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('
JSonWithMessageCode', function ($code, $message = 'Success', $status = 200, array $headers = [], $options = 0) { return \Illuminate\Support\Fa
CADes\Response::
JSon(['message' => $message, 'code' => $code], $status, $headers, $options); }); \Illuminate\Support\Fa
CADes\Response::macro('cookie', function ($name, $value = null, $minutes = 0, $path = null, $dom
AIn = null, $secure = false, $httpOnly = true, $raw = false, $sameSite = null) { return \Illuminate\Support\Fa
CADes\Response::cookie($name, $value, $minutes, $path, $dom
AIn, $secure, $httpOnly, $raw, $sameSite); }); \Illuminate\Support\Fa
CADes\Response::macro('setStatusCode', function ($code) { return \Illuminate\Support\Fa
CADes\Response::setStatusCode($code); }); \Illuminate\Support\Fa
CADes\Response::macro('add
Meta', function ($key, $value) { return \Illuminate\Support\Fa
CADes\Response::add
Meta($key, $value); }); \Illuminate\Support\Fa
CADes\Response::macro('get
Meta', function ($key) { return \Illuminate\Support\Fa
CADes\Response::get
Meta($key); }); \Illuminate\Support\Fa
CADes\Response::macro('remove
Meta', function ($key) { return \Illuminate\Support\Fa
CADes\Response::remove
Meta($key); }); \Illuminate\Support\Fa
CADes\Response::macro('get
MetaKeys', function () { return \Illuminate\Support\Fa
CADes\Response::get
MetaKeys(); }); \Illuminate\Support\Fa
CADes\Response::macro('clear
Meta', function () { return \Illuminate\Support\Fa
CADes\Response::clear
Meta(); }); \Illuminate\Support\Fa
CADes\Response::macro('setResponseCode', function ($code) { return \Illuminate\Support\Fa
CADes\Response::setResponseCode($code); }); \Illuminate\Support\Fa
CADes\Response::macro('getResponseCode', function () { return \Illuminate\Support\Fa
CADes\Response::getResponseCode(); }); \Illuminate\Support\Fa
CADes\Response::macro('setSuccessCode', function ($code) { return \Illuminate\Support\Fa
CADes\Response::setSuccessCode($code); }); \Illuminate\Support\Fa
CADes\Response::macro('getSuccessCode', function () { return \Illuminate\Support\Fa
CADes\Response::getSuccessCode(); }); \Illuminate\Support\Fa
CADes\Response::macro('setErrorCode', function ($code) { return \Illuminate\Support\Fa
CADes\Response::setErrorCode($code); }); \Illuminate\Support\Fa
CADes\Response::macro('getErrorCode', function () { return \Illuminate\Support\Fa
CADes\Response::getErrorCode(); }); \Illuminate\Support\Fa
CADes\Response::macro('setMessageCode', function ($code) { return \Illuminate\Support\Fa
CADes\Response::setMessageCode($code); }); \Illuminate\Support\Fa
CADes\Response::macro('getMessageCode', function () { return \Illuminate\Support\Fa
CADes\Response::getMessageCode(); }); \Illuminate\Support\Fa
CADes\Response::macro('set
MetaKey', function ($key, $value = null) { return \Illuminate\Support\Fa
CADes\Response::set
MetaKey($key, $value); }); \Illuminate\Support\Fa
CADes\Response::macro('get
MetaKey', function ($key) { return \Illuminate\Support\Fa
CADes\Response::get
MetaKey($key); }); \Illuminate\Support\Fa
CADes\Response::macro('remove
MetaKey', function ($key) { return \Illuminate\Support\Fa
CADes\Response::remove
MetaKey($key); }); \Illuminate\Support\Fa
CADes\Response::macro('get
MetaKeysWithPrefix', function ($prefix) { return \Illuminate\Support\Fa
CADes\Response::get
MetaKeysWithPrefix($prefix); }); \Illuminate\Support\Fa
CADes\Response::macro('clear
MetaKeysWithPrefix', function ($prefix) { return \Illuminate\Support\Fa
CADes\Response::clear
MetaKeysWithPrefix($prefix); }); \Illuminate\Support\Fa
CADes\Response::macro('has
MetaKey', function ($key) { return \Illuminate\Support\Fa
CADes\Response::has
MetaKey($key); }); \Illuminate\Support\Facades\Response::macro('has
MetaKeysWithPrefix', function ($prefix) { return \Illuminate\Support\Facades\Response::has
MetaKeysWithPrefix($prefix); }); \Illuminate\Support\Facades\Response::macro('s
etcookie', function ($name, $value = null, $minutes = 0, $path = null, $dom
AIn = null, $secure = false, $httpOnly = true, $raw = false, $sameSite = null) { return \Illuminate\Support\Facades\Response::s
etcookie($name, $value, $minutes, $path, $dom
AIn, $secure, $httpOnly, $raw, $sameSite); }); \Illuminate\Support\Facades\Response::macro('g
etcookie', function ($name, $default = null) { return \Illuminate\Support\Facades\Response::g
etcookie($name, $default); }); \Illuminate\Support\Facades\Response::macro('removeCookie', function ($name, $path = null, $dom
AIn = null) { return \Illuminate\Support\Facades\Response::removeCookie($name, $path, $dom
AIn); }); \Illuminate\Support\Facades\Response::macro('hasCookie', function ($name) { return \Illuminate\Support\Facades\Response::hasCookie($name); }); \Illuminate\Support\Facades\Response::macro('clearCookies', function () { return \Illuminate\Support\Facades\Response::clearCookies(); }); \Illuminate\Support\Facades\Response::macro('setHeader', function ($key, $value = null) { return \Illuminate\Support\Facades\Response::setHeader($key, $value); }); \Illuminate\Support\Facades\Response::macro('getHeader', function ($key) { return \Illuminate\Support\Facades\Response::getHeader($key); }); \Illuminate\Support\Facades\Response::macro('removeHeader', function ($key) { return \Illuminate\Support\Facades\Response::removeHeader($key); }); \Illuminate\Support\Facades\Response::macro('getHeaders', function () { return \Illuminate\Support\Facades\Response::getHeaders(); }); \Illuminate\Support\Facades\Response::macro('clearHeaders', function () { return \Illuminate\Support\Facades\Response::clearHeaders(); }); \Illuminate\Support\Facades\Response::macro('setHeaders', function (array $headers) { return \Illuminate\Support\Facades\Response::setHeaders($headers); }); \Illuminate\Support\Facades\Response::macro('hasHeader', function ($key) { return \Illuminate\Support\Facades\Response::hasHeader($key); }); \Illuminate\Support\Facades\Response::macro('withHeaders', function (array $headers) { return \Illuminate\Support\Facades\Response::withHeaders($headers); }); \Illuminate\Support\Facades\Response::macro('set
MetaKeys', function (array $
Meta) { return \Illuminate\Support\Facades\Response::set
MetaKeys($
Meta); }); \Illuminate\Support\Facades\Response::macro('get
MetaKeys', function () { return \Illuminate\Support\Facades\Response::get
MetaKeys(); }); \Illuminate\Support\Facades\Response::macro('remove
MetaKeys', function (array $keys) { return \Illuminate\Support\Facades\Response::remove
MetaKeys($keys); }); \Illuminate\Support\Facades\Response::macro('clear
MetaKeys', function () { return \Illuminate\Support\Facades\Response::clear
MetaKeys(); }); \Illuminate\Support\Facades\Response::macro('has
MetaKeys', function (array $keys) { return \Illuminate\Support\Facades\Response::has
MetaKeys($keys); }); \Illuminate\Support\Facades\Response::macro('hasAny
MetaKeys', function (array $keys) { return \Illuminate\Support\Facades\Response::hasAny
MetaKeys($keys); }); \Illuminate\Support\Facades\Response::macro('hasAll
MetaKeys', function (array $keys) { return \Illuminate\Support\Facades\Response::hasAll
MetaKeys($keys); }); \Illuminate\Support\Facades\Response::macro('setResponseCodes', function (array $codes) { return \Illuminate\Support\Facades\Response::setResponseCodes($codes); }); \Illuminate\Support\Facades\Response::macro('getResponseCodes', function () { return \Illuminate\Support\Facades\Response::getResponseCodes(); }); \Illuminate\Support\Facades\Response::macro('setSuccessCodes', function (array $codes) { return \Illuminate\Support\Facades\Response::setSuccessCodes($codes); }); \Illuminate\Support\Facades\Response::macro('getSuccessCodes', function () { return \Illuminate\Support\Facades\Response::getSuccessCodes(); }); \Illuminate\Support\Facades\Response::macro('setErrorCodes', function (array $codes) { return \Illuminate\Support\Facades\Response::setErrorCodes($codes); }); \Illuminate\Support\Facades\Response::macro('getErrorCodes', function () { return \Illuminate\Support\Facades\Response::getErrorCodes(); }); \Illuminate\Support\Facades\Response::macro('setMessageCodes', function (array $codes) { return \Illuminate\Support\Facades\Response::setMessageCodes($codes); }); \Illuminate\Support\Facades\Response::macro('getMessageCodes', function () { return \Illuminate\Support\Facades\Response::getMessageCodes(); }); \Illuminate\Support\Facades\Response::macro('get
MetaKeysWithPrefix', function ($prefix) { return \Illuminate\Support\Facades\Response::get
MetaKeysWithPrefix($prefix); }); \Illuminate\Support\Facades\Response::macro('clear
MetaKeysWithPrefix', function ($prefix) { return \Illuminate\Support\Facades\Response::clear
MetaKeysWithPrefix($prefix); }); \Illuminate\Support\Facades\Response::macro('has
MetaKeysWithPrefix', function ($prefix) { return \Illuminate\Support\Facades\Response::has
MetaKeysWithPrefix($prefix); }); \Illuminate\Support\Facades\Response::macro('hasAny
MetaKeysWithPrefix', function ($prefixes) { return \Illuminate\Support\Facades\Response::hasAny
Meta