首页 > 解决方案 > Laravel 中的文件上传

问题描述

我刚开始使用 Laravel 并尝试使用Dropzone JS进行文件上传。我可以成功上传文件,但它们会登陆app/Http/Controllers,然后无法公开访问。

似乎将此目录视为根目录,因此如果我将 /uploads 指定为文件夹,那么它们将进入app/Http/Controllers/uploads(这显然也不好)。使用..s 似乎没有任何效果。

这是我的文件上传存储方法:

$ds = DIRECTORY_SEPARATOR;
$storeFolder = '';
if ( ! empty($_FILES)) {
    $tempFile = $_FILES['file']['tmp_name'];
    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
    $targetFile =  $targetPath. $_FILES['file']['name'];
    move_uploaded_file($tempFile,$targetFile);
}

我还尝试了一些我发现的其他方法(如下),但我在 Chrome 的元素检查器中遇到了 500 个错误。

来自官方文档

$path = $request->file('file')->store('uploads');

从我发现的教程中

$file = $request->file('file');
$destinationPath = '/';
$file->move($destinationPath,$file->getClientOriginalName());

从另一个教程

$uploadedFile = $request->file('file');
$filename = time().$uploadedFile->getClientOriginalName();
Storage::disk('local')->putFileAs(
    '/'.$filename,
    $uploadedFile,
    $filename
);

当前方法看起来不错,但只需要将文件存储在公共/上传中。

标签: phplaraveldropzone

解决方案


请改用此路径:

$targetPath = public_path().'/uploads/';

推荐阅读