提交大文件 Laravel 和 Ajax

Posted

技术标签:

【中文标题】提交大文件 Laravel 和 Ajax【英文标题】:Submitting large files Laravel and Ajax 【发布时间】:2020-03-25 19:21:31 【问题描述】:

我有一个表单,用户通过 Ajax 请求提交带有多个图像的产品并将其添加到数据库中。问题是当我选择较低(12kb)的图像时,它会保存产品,但如果它是大文件(1mb)或(400kb),它不会保存产品。我已将上传限制设置为 10000mb,如何解决此问题?

控制器

  public function store(Request $request)


   // ($request->all());
    $formInput=$request->except('filename');

    $product = product::create(array_merge($formInput, [
        'seller_id'=> Auth::user()->id,
        'user_id' => Auth::user()->id
    ]));
    foreach ($request->photos as $photo) 
       $filename = $photo->store('public/photos');
        ProductsPhoto::create([
            'product_id' => $product->id,
            'filename' => $filename
        ]);
    


阿贾克斯

 var token = $("#token").val();
 $(document).ready(function()
 $("#btn").click(function()
    var form = $('form')[0]; 
    var formData = new FormData(form);
    formData.append('_token', token); // adding token
    $.ajax(
        url: "<?php echo url('seller/product') ?>",
        data: formData, 
        type: 'POST',
        contentType: false, 
        processData: false,
        success:function(data)
         console.log(data);
        
    );
  );
);

【问题讨论】:

【参考方案1】:

使用适当的错误处理并检查异常。

您应该在php.ini 配置中同时设置upload_max_filesizepost_max_sizememory_limit

示例

upload_max_filesize = 20M
post_max_size = 21M
memory_limit = 128M

注意:post_max_size 必须略大于 upload_max_filesize

【讨论】:

首先,它工作正常,因为我没有使用 Ajax,所以我能够上传更大的文件,但是在 Ajax 之后它没有上传,所以我猜问题不在 php.ini 中。 @Banujan Balendrakumar AJAX 没有上传限制。正确调试代码 别忘了重启 artisan 服务器并清除所有 laravel 缓存 我在控制台上看不到任何错误,有时我可以上传一个大文件,然后如果我再次尝试添加它会失败@Banujan Balendrakumar

以上是关于提交大文件 Laravel 和 Ajax的主要内容,如果未能解决你的问题,请参考以下文章

Git系列github错误提交大文件后剔除的方法

在svn上提交大文件时出现超时错误

git提交大文件的解决方法

Dask分布式中如何高效提交大参数任务?

使用 ajax 和 laravel 上传文件表单时出现问题?

Laravel 5.8 文件上传使用 PUT 方法和 ajax