繁体   English   中英

Laravel 8 UploadFile 不上传文件到存储

[英]Laravel 8 UploadFile doesnt upload file to storage

我正在尝试使用用户帐户,用户可以在其中上传仅对该用户可见的文件。 我已经有了表格,但是表格不能正常工作,在./public/storage/images 中什么也没有出现。 我认为这是因为存储的访问权限,但我不知道如何授予访问权限(我使用 Windows)。

我已经尝试在 config\filesystem.php 'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
    ],

],
'links' => [
    public_path('storage') => storage_path('public'),
],

];

你能帮忙吗?

<form  action="{{url('image-upload')}}" enctype="multipart/form-data" method="post">
     @csrf
     <input type="file" name="file">
     <input type="submit">
</form>

**Controller**

 <?php

namespace App\Http\Controllers;

use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;

class ImageUploadController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Application|Factory|View
     */
    public function imageUpload()
    {
        return view('imageUpload');
    }

    /**
     * Display a listing of the resource.
     *
     * @param Request $request
     * @return RedirectResponse
     */
    public function imageUploadPost(Request $request): RedirectResponse
    {
        $request->validate([
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

        $imageName = time().'.'.$request->image->extension();

        $request->image->move(public_path('images'), $imageName);

        return back()
            ->with('success','You have successfully upload image.')
            ->with('image',$imageName);

    }
}

**Routes, web.php :**
Route::get('image-upload', 'ImageUploadController@imageUpaload')->name('image.upload');
    Route::post('image-upload', 'ImageUploadController@imageUploadPost')->name('image.upload.post');

目前我正在使用这样的东西,所以这对我有用:

首先,您的配置文件看起来不错。 让我们看看你的 Controller,所以我认为你需要检查文件是否存在,如下所示:

if ($request->file('image') != null) 
{
    $request->validate([
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

    $imageName = time().'.'.$request->image->extension();

    $request->image->move(public_path('images'), $imageName);

    return back()
         ->with('success','You have successfully upload image.')
         ->with('image',$imageName);
}

您的代码的 rest 看起来不错,应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM