php - Laravel 中的文件上传与验证给出问题并失败并出现白屏且没有错误
问题描述
我一直在尝试遵循一些关于使用 Laravel PHP 上传文件的指南,但遇到了障碍。目前我的下面的控制器编译没有错误,但把我带到一个白页,我的文件上传似乎没有进入我的存储位置。我已经让图像上传工作,但我希望这是一个图像、音频或视频上传功能,但我无法让它工作。我正在努力解决如何调试此代码以查看它可能出错的地方。是因为我在 if 语句中的 return 语句吗?这里是业余爱好者,将不胜感激这里的任何帮助。
谢谢
有关我引用的资源和控制器,请参见下文。
https://appdividend.com/2018/08/15/laravel-file-upload-example
https://www.webslesson.info/2018/02/image-file-upload-in-laravel-with-validation.html
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class UploadfileController extends Controller
{
function index()
{
return view('upload');
}
function upload(Request $request)
{
if( $request->hasFile('file') ) {
$file = $request->file('file');
$imagemimes = ['image/jpeg,png']; //Add more mimes that you want to support
$videomimes = ['video/mp4,mpeg,ogg,mp4,webm,3gp,mov,flv,avi,wmv,ts']; //Add more mimes that you want to support
$audiomimes = ['audio/mpeg,mpga,mp3,wav,aac']; //Add more mimes that you want to support
//Validate images
if(in_array($file->getMimeType() ,$imagemimes)) {
$filevalidate = 'required|mimes:jpeg,png|max:2048';
}
//Validate video
if (in_array($file->getMimeType() ,$videomimes)) {
$filevalidate = 'required|file|mimes:mpeg,ogg,mp4,webm,3gp,mov,flv,avi,wmv,ts|max:4000040';
}
//validate audio
if (in_array($file->getMimeType() ,$audiomimes)) {
$filevalidate = 'required|file|mimes:audio/mpeg,mpga,mp3,wav,aac|max:90048';
}
$original = $file->getClientOriginalName();
// get filename with extension like demo.php
$filename = pathinfo($original)['basename'];
// get public path to images folder
$path = public_path('files');
// concat public path with filename
$filePath = $path.'/'.$filename;
// store uploaded file to path
$store = Storage::put($filePath, File::get($file));
return back()->with('success', 'Media Uploaded Successfully')->with('path', $store);
}
}
}
解决方案
您从前端发送的字段称为“文件”,对吗?只是检查。
我的第一个想法是您的程序可能没有进入您的 if 语句,这将解释白屏。首先,我建议您return var_dump($request->hasFile('file'));
看看返回的是真还是假。
然后,也许试着return [$request->file('file')];
看看它说了什么......然后我们将从那里开始。我不是专家,但我想我可以提供一点帮助 =)
推荐阅读
- python - 如何在 docker 内的 redis 中进行 set/get 工作?
- java - 如何在不使用 Collections.sort 方法的情况下按字母顺序排列这个 ArrayList?
- swagger - 如何将 Swagger 的默认“响应内容类型”更改为“application/json”?
- javascript - 时间选择器禁止在手机上的字段中输入
- gitlab - 如何在 Gitlab 上查看文件的所有历史版本?
- ibm-cloud - 在 dropsolve 中带有回调的 docplex
- javascript - 使用地图获取属性是否禁用
- if-statement - 我不想写 60 个 'IF' 命令
- python - TypeError:将形状转换为 TensorShape 时出错:int() 参数必须是字符串或数字,而不是“元组”
- html - 使用 VB.Net 将 Excel 转换为 HTML