【问题标题】:Laravel array with illuminate objects带有照明对象的 Laravel 阵列
【发布时间】:2019-07-04 12:08:03
【问题描述】:

我正在尝试将图像从 AJAX 传递到后端并上传它们,将它们的名称保存到数据库中。

我的 AJAX 代码:

var form_data = new FormData($('.updateForm')[0]);

            $.ajax({

                method: "POST",
                url: "/updateMyPost",
                data: form_data,
                cache : false,
                contentType: false,
                processData: false,
                success: function (result) {

                    console.log(result);

                }

            });

Laravel 上传文件的函数:

public function updateMyPost(Request $request){

        $name = $request->input('text');

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

        foreach($images as $image){

            $image_name = time() . $image->getClientOriginalName();

            $path = public_path('images');

            $img->move($path,$image_name);

        }  

    }

这就是我打印出来时 $request->file("images") 给我的。

Array
(
    [0] => Illuminate\Http\UploadedFile Object
        (
            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => images.jpg
            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
            [hashName:protected] => 
            [pathName:SplFileInfo:private] => C:\xampp\tmp\phpAB87.tmp
            [fileName:SplFileInfo:private] => phpAB87.tmp
        )

    [1] => Illuminate\Http\UploadedFile Object
        (
            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => iphonex-TA.jpg
            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
            [hashName:protected] => 
            [pathName:SplFileInfo:private] => C:\xampp\tmp\phpAB88.tmp
            [fileName:SplFileInfo:private] => phpAB88.tmp
        )

)

如何获取每个图像名称并上传它们?

【问题讨论】:

  • 您要上传多张图片吗?
  • 是的,在这种情况下是两张图片
  • 检查我的答案

标签: jquery ajax laravel


【解决方案1】:

正如您所说,您要上传多张图片,因此您的 store() 方法应如下所示

public function updateMyPost(Request $r)
{
    $images = $r->images;
    foreach($images as $image)
    {
        $path = $image->store('public/images');
        $image_name = $image->getClientOriginalName();

        // to store data in your table
        Model::create([
          'path' => $path,
          'name' => $image_name
        ])
    }
}

【讨论】:

  • 函数名必须是'store'吗?我的函数有一个不同的名称,你的代码不能完成这项工作。
  • 函数名可以是任何东西都没关系,这只是一个例子
  • 在您的代码中将 $img->move($path,$image_name); 更改为 $image->move($path,$image_name);
  • 我已经删除了$image = $image->toArray(); 行并将$img->move($path,$image_name); 更改为$image->move($path,$image_name);,它现在可以工作了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 2015-04-09
  • 2017-01-27
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
相关资源
最近更新 更多