【问题标题】:Laravel -How to store image file provided by userLaravel - 如何存储用户提供的图片文件
【发布时间】:2022-12-19 01:00:54
【问题描述】:

所以我有一个简单的 HTML 文件插入框,

<input id="image" type="file" name="image" value="{{ old('image') }}" accept="image/gif, image/jpeg, image/png" class="black-font">

但是在插入图像并转到不同的页面后,网站不保存图像,这意味着我以后无法使用它。我四处寻找一些方法来解决这个问题,但我找不到任何有效的方法。有什么办法可以存储文件吗?或者让我能够在网站的另一个页面中使用它们的另一种选择?

如果有帮助,我有一个名为“事件”的 SQL 表,其属性为image,我想在其中存储所提供图像的链接/路径。

【问题讨论】:

    标签: php html laravel


    【解决方案1】:

    默认情况下,公共磁盘使用本地驱动程序并将这些文件存储在storage/app/public 下。要通过网络访问它们,您需要创建一个从public/storagestorage/app/public 的符号链接。 进入.env文件,创建一个名为FILESYSTEM_DRIVER的变量,并将其设置为public,如下所示:

    FILESYSTEM_DRIVER=public
    

    接下来,使用下面的命令来创建符号链接。

    php artisan storage:link
    

    【讨论】:

      【解决方案2】:

      为了保存上传的图像并在以后使用,您需要将图像存储在服务器上并将图像的位置(文件路径)保存在您的数据库中。

      以下是该过程的总体概述:

      1. 当用户选择图像并提交表单时,PHP 脚本 在您的服务器上将收到图像文件。
      2. 然后您可以使用 Laravel File facade 的 store() 方法来保存 图像到服务器上的目录。此方法返回 已保存图像的文件路径,然后您可以将其保存在您的 数据库。
      3. 要检索图像并将其显示在您网站的另一个页面上, 您可以使用 asset() 辅助函数生成指向 保存的图像,然后使用 HTML 中的标记来显示 图片。

        以下是您如何在 Laravel 应用程序中实现此过程的示例:

        // In your HTML form:
        <form method="post" action="/upload-image" enctype="multipart/form-data">
            <input id="image" type="file" name="image" value="{{ old('image') }}" accept="image/gif, image/jpeg, image/png" class="black-font">
            <button type="submit">Upload Image</button>
        </form>
        
        // In your Laravel route:
        Route::post('/upload-image', function (Request $request) {
            // Validate the uploaded image file
            $request->validate([
                'image' => 'required|image|max:2048'
            ]);
        
            // Store the image on the server and get the file path
            $imagePath = $request->file('image')->store('public/images');
        
            // Save the image file path in your database
            $event = new Event;
            $event->image = $imagePath;
            $event->save();
        
            return redirect('/events')->with('success', 'Image uploaded successfully.');
        });
        
        // In your HTML to display the image:
        <img src="{{ asset('storage/' . $event->image) }}" alt="Event Image">
        

        注意:在这个例子中,我假设你已经在你的数据库中创建了一个事件模型和一个相应的事件表,并且你正在使用 Laravel 存储目录来保存上传的图像。您可能需要调整此示例以满足您的特定需求。

      【讨论】:

      • 哇!非常感谢,我会测试它并回复你!
      猜你喜欢
      • 2022-12-06
      • 2021-12-15
      • 1970-01-01
      • 2018-06-19
      • 2023-03-26
      • 2020-02-12
      • 2021-11-09
      • 2016-12-18
      • 1970-01-01
      相关资源
      最近更新 更多