Dropzone 后端 Laravel 中没有有效的 MIME 类型

laravel

1个回答

写回答

陆佳峰

2025-06-21 15:00

+ 关注

Laravel
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\FaCADes\Response::macro('filetype', function ($type, $content) {

return response($content, 200, [

'Content-Type' => $type,

]);

});

\Illuminate\Support\FaCADes\Response::macro('file', function ($content, $filename) {

return response($content, 200, [

'Content-Disposition' => 'attachment; filename="' . $filename . '"',

]);

});

\Illuminate\Support\FaCADes\Response::macro('stream', function ($callback, $filename) {

$response = \Illuminate\Support\FaCADes\Response::stream($callback, 200, [

'Content-Disposition' => 'attachment; filename="' . $filename . '"',

]);

return $response;

});

\Illuminate\Support\FaCADes\Response::macro('download', function ($filename, $name = null) {

return \Illuminate\Support\FaCADes\Response::download($filename, $name);

});

\Illuminate\Support\FaCADes\Response::macro('attachment', function ($filename, $name = null, $headers = []) {

return \Illuminate\Support\FaCADes\Response::download($filename, $name, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('inline', function ($filename, $name = null, $headers = []) {

return \Illuminate\Support\FaCADes\Response::download($filename, $name, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('JSon', function ($data = [], $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon($data, $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('JSonp', function ($callback, $data = [], $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSonp($callback, $data, $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('XML', function ($data = [], $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::XML($data, $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('csv', function ($data = [], $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::csv($data, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('pdf', function ($filename, $data = [], $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::pdf($filename, $data, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('zip', function ($filename, $files = [], $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::zip($filename, $files, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('excel', function ($filename, $data = [], $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::excel($filename, $data, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('word', function ($filename, $data = [], $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::word($filename, $data, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('ppt', function ($filename, $data = [], $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::ppt($filename, $data, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('image', function ($content, $status = 200, array $headers = [], $options = []) {

return \Illuminate\Support\FaCADes\Response::image($content, $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('streamed', function ($callback, $status = 200, array $headers = []) {

return \Illuminate\Support\FaCADes\Response::streamed($callback, $status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('redirect', function ($url, $status = 302, $headers = [], $secure = null) {

return \Illuminate\Support\FaCADes\Response::redirect($url, $status, $headers, $secure);

});

\Illuminate\Support\FaCADes\Response::macro('back', function ($status = 302, $headers = []) {

return \Illuminate\Support\FaCADes\Response::back($status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('refresh', function ($status = 302, $headers = []) {

return \Illuminate\Support\FaCADes\Response::refresh($status, $headers);

});

\Illuminate\Support\FaCADes\Response::macro('JSonOrJSonp', function ($data = [], $status = 200, array $headers = [], $options = 0) {

$request = \Illuminate\Support\FaCADes\Request::instance();

if ($request->has('callback')) {

return \Illuminate\Support\FaCADes\Response::JSonp($request->input('callback'), $data, $status, $headers, $options);

} else {

return \Illuminate\Support\FaCADes\Response::JSon($data, $status, $headers, $options);

}

});

\Illuminate\Support\FaCADes\Response::macro('page', function ($view, $data = [], $mergeData = []) {

return \Illuminate\Support\FaCADes\Response::view($view, $data, $mergeData);

});

\Illuminate\Support\FaCADes\Response::macro('template', function ($view, $data = [], $mergeData = []) {

return \Illuminate\Support\FaCADes\Response::view($view, $data, $mergeData);

});

\Illuminate\Support\FaCADes\Response::macro('error', function ($message = 'Error', $status = 400, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon(['error' => $message], $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('success', function ($data = [], $message = 'Success', $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon(['message' => $message, 'data' => $data], $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('message', function ($message = 'Success', $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon(['message' => $message], $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('JSonWithErrorCode', function ($code, $message = 'Error', $status = 400, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon(['error' => $message, 'code' => $code], $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('JSonWithSuccessCode', function ($code, $data = [], $message = 'Success', $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon(['message' => $message, 'data' => $data, 'code' => $code], $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('JSonWithMessageCode', function ($code, $message = 'Success', $status = 200, array $headers = [], $options = 0) {

return \Illuminate\Support\FaCADes\Response::JSon(['message' => $message, 'code' => $code], $status, $headers, $options);

});

\Illuminate\Support\FaCADes\Response::macro('cookie', function ($name, $value = null, $minutes = 0, $path = null, $domAIn = null, $secure = false, $httpOnly = true, $raw = false, $sameSite = null) {

return \Illuminate\Support\FaCADes\Response::cookie($name, $value, $minutes, $path, $domAIn, $secure, $httpOnly, $raw, $sameSite);

});

\Illuminate\Support\FaCADes\Response::macro('setStatusCode', function ($code) {

return \Illuminate\Support\FaCADes\Response::setStatusCode($code);

});

\Illuminate\Support\FaCADes\Response::macro('addMeta', function ($key, $value) {

return \Illuminate\Support\FaCADes\Response::addMeta($key, $value);

});

\Illuminate\Support\FaCADes\Response::macro('getMeta', function ($key) {

return \Illuminate\Support\FaCADes\Response::getMeta($key);

});

\Illuminate\Support\FaCADes\Response::macro('removeMeta', function ($key) {

return \Illuminate\Support\FaCADes\Response::removeMeta($key);

});

\Illuminate\Support\FaCADes\Response::macro('getMetaKeys', function () {

return \Illuminate\Support\FaCADes\Response::getMetaKeys();

});

\Illuminate\Support\FaCADes\Response::macro('clearMeta', function () {

return \Illuminate\Support\FaCADes\Response::clearMeta();

});

\Illuminate\Support\FaCADes\Response::macro('setResponseCode', function ($code) {

return \Illuminate\Support\FaCADes\Response::setResponseCode($code);

});

\Illuminate\Support\FaCADes\Response::macro('getResponseCode', function () {

return \Illuminate\Support\FaCADes\Response::getResponseCode();

});

\Illuminate\Support\FaCADes\Response::macro('setSuccessCode', function ($code) {

return \Illuminate\Support\FaCADes\Response::setSuccessCode($code);

});

\Illuminate\Support\FaCADes\Response::macro('getSuccessCode', function () {

return \Illuminate\Support\FaCADes\Response::getSuccessCode();

});

\Illuminate\Support\FaCADes\Response::macro('setErrorCode', function ($code) {

return \Illuminate\Support\FaCADes\Response::setErrorCode($code);

});

\Illuminate\Support\FaCADes\Response::macro('getErrorCode', function () {

return \Illuminate\Support\FaCADes\Response::getErrorCode();

});

\Illuminate\Support\FaCADes\Response::macro('setMessageCode', function ($code) {

return \Illuminate\Support\FaCADes\Response::setMessageCode($code);

});

\Illuminate\Support\FaCADes\Response::macro('getMessageCode', function () {

return \Illuminate\Support\FaCADes\Response::getMessageCode();

});

\Illuminate\Support\FaCADes\Response::macro('setMetaKey', function ($key, $value = null) {

return \Illuminate\Support\FaCADes\Response::setMetaKey($key, $value);

});

\Illuminate\Support\FaCADes\Response::macro('getMetaKey', function ($key) {

return \Illuminate\Support\FaCADes\Response::getMetaKey($key);

});

\Illuminate\Support\FaCADes\Response::macro('removeMetaKey', function ($key) {

return \Illuminate\Support\FaCADes\Response::removeMetaKey($key);

});

\Illuminate\Support\FaCADes\Response::macro('getMetaKeysWithPrefix', function ($prefix) {

return \Illuminate\Support\FaCADes\Response::getMetaKeysWithPrefix($prefix);

});

\Illuminate\Support\FaCADes\Response::macro('clearMetaKeysWithPrefix', function ($prefix) {

return \Illuminate\Support\FaCADes\Response::clearMetaKeysWithPrefix($prefix);

});

\Illuminate\Support\FaCADes\Response::macro('hasMetaKey', function ($key) {

return \Illuminate\Support\FaCADes\Response::hasMetaKey($key);

});

\Illuminate\Support\Facades\Response::macro('hasMetaKeysWithPrefix', function ($prefix) {

return \Illuminate\Support\Facades\Response::hasMetaKeysWithPrefix($prefix);

});

\Illuminate\Support\Facades\Response::macro('setcookie', function ($name, $value = null, $minutes = 0, $path = null, $domAIn = null, $secure = false, $httpOnly = true, $raw = false, $sameSite = null) {

return \Illuminate\Support\Facades\Response::setcookie($name, $value, $minutes, $path, $domAIn, $secure, $httpOnly, $raw, $sameSite);

});

\Illuminate\Support\Facades\Response::macro('getcookie', function ($name, $default = null) {

return \Illuminate\Support\Facades\Response::getcookie($name, $default);

});

\Illuminate\Support\Facades\Response::macro('removeCookie', function ($name, $path = null, $domAIn = null) {

return \Illuminate\Support\Facades\Response::removeCookie($name, $path, $domAIn);

});

\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('setMetaKeys', function (array $Meta) {

return \Illuminate\Support\Facades\Response::setMetaKeys($Meta);

});

\Illuminate\Support\Facades\Response::macro('getMetaKeys', function () {

return \Illuminate\Support\Facades\Response::getMetaKeys();

});

\Illuminate\Support\Facades\Response::macro('removeMetaKeys', function (array $keys) {

return \Illuminate\Support\Facades\Response::removeMetaKeys($keys);

});

\Illuminate\Support\Facades\Response::macro('clearMetaKeys', function () {

return \Illuminate\Support\Facades\Response::clearMetaKeys();

});

\Illuminate\Support\Facades\Response::macro('hasMetaKeys', function (array $keys) {

return \Illuminate\Support\Facades\Response::hasMetaKeys($keys);

});

\Illuminate\Support\Facades\Response::macro('hasAnyMetaKeys', function (array $keys) {

return \Illuminate\Support\Facades\Response::hasAnyMetaKeys($keys);

});

\Illuminate\Support\Facades\Response::macro('hasAllMetaKeys', function (array $keys) {

return \Illuminate\Support\Facades\Response::hasAllMetaKeys($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('getMetaKeysWithPrefix', function ($prefix) {

return \Illuminate\Support\Facades\Response::getMetaKeysWithPrefix($prefix);

});

\Illuminate\Support\Facades\Response::macro('clearMetaKeysWithPrefix', function ($prefix) {

return \Illuminate\Support\Facades\Response::clearMetaKeysWithPrefix($prefix);

});

\Illuminate\Support\Facades\Response::macro('hasMetaKeysWithPrefix', function ($prefix) {

return \Illuminate\Support\Facades\Response::hasMetaKeysWithPrefix($prefix);

});

\Illuminate\Support\Facades\Response::macro('hasAnyMetaKeysWithPrefix', function ($prefixes) {

return \Illuminate\Support\Facades\Response::hasAnyMeta

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号