如何上传大文件> laravel 5中5MB

时间:2016-04-13 13:38:23

标签: php laravel file-upload

我是否知道如何在Laravel 5中上传超过5Mb的大文件?我正在尝试上传大约10MB的图片文件但是没有上传,我搜索了很多并更新了php.ini

中的以下设置
post_max_size = 500M;
memory_limit = 500M;
upload_max_filesize = 500M

我已重新启动Apache服务器但仍有问题。 php.ini或Laravel中是否还有其他设置来上传大文件?请帮忙。

修改

$image = $request->file('image');

            if($image && $image != '') {

                $extension  = $image->getClientOriginalExtension();
                $imageName = $this->getUniqueName($extension);
                $image->move('gimages/profile_images/', $imageName);
                $profile_image = $imageName;
                $update_user_data['image'] = $profile_image;
            }

非常感谢!

3 个答案:

答案 0 :(得分:7)

我可能会迟到。

但我认为有人可能需要一种专门将文件流式传输到

的方法

本地存储而不是s3

以下是将文件流式传输到本地存储的方法。正如documentation所说

  

本地驱动程序

     

使用本地驱动程序时,请注意所有文件操作都是   相对于配置文件中定义的根目录。通过   默认情况下,此值设置为storage / app目录。因此,   以下方法将文件存储在storage / app / file.txt中:

Storage::disk('local')->put('file.txt', 'Contents');

所以要转发到本地而不是使用 s3 作为答案中提到的@koalaok,您可以使用本地。所以它会像

$disk = Storage::disk('local');
$disk->put($targetFile, fopen($sourceFile, 'r+'));

答案 1 :(得分:4)

如果要上传大文件,则应使用流。这是代码:

$disk = Storage::disk('s3');
$disk->put($targetFile, fopen($sourceFile, 'r+'));

即使您上传了几GB的文件,PHP也只需要几MB的RAM。

来源:https://murze.be/2015/07/upload-large-files-to-s3-using-laravel-5/

有关存储的用法和配置,请参阅Lrvl5 doc: https://laravel.com/docs/5.0/filesystem

答案 2 :(得分:0)

在Laravel新版本(+5.3)中,具有“自动流”功能。您可以这样使用:

use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;

// Automatically generate a unique ID for file name...
Storage::putFile('photos', new File('/path/to/photo'));

// Manually specify a file name...
Storage::putFileAs('photos', new File('/path/to/photo'), 'photo.jpg');

有关更多信息,请关注此文档并搜索“自动流式传输”:https://laravel.com/docs/5.6/filesystem