首页 > 解决方案 > 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);

}
}
}

标签: phplaravelfilecontrollerupload

解决方案


您从前端发送的字段称为“文件”,对吗?只是检查。

我的第一个想法是您的程序可能没有进入您的 if 语句,这将解释白屏。首先,我建议您return var_dump($request->hasFile('file')); 看看返回的是真还是假。

然后,也许试着return [$request->file('file')];看看它说了什么......然后我们将从那里开始。我不是专家,但我想我可以提供一点帮助 =)


推荐阅读