【问题标题】:Multiple Image Uploader in Vue js and LaravelVue js 和 Laravel 中的多图像上传器
【发布时间】:2020-11-14 02:08:19
【问题描述】:

这是我的多图片上传器的模板文件和脚本文件。当我选择多个图像时,它工作正常,但我的数组按照给定图片的顺序排列。那么我该如何解决这个问题?

<input type="file" class="form-control" multiple accept="image/jpeg" @change="uploadImage"/>
<div  v-for="(image, key) in images" :key="key">
     <img :ref="'image'" class="preview" style="width:200px;"/>
      {{ image.name }}
 </div>

 

<script>
export default {
    data() {
        return {
            images: [],

        }
    },
    methods: {
        uploadImage(e) {
            let vm = this;
            var selectedFiles = e.target.files;
            for (let i = 0; i < selectedFiles.length; i++) {
                this.images.push(selectedFiles[i]);
            }
            for (let i = 0; i < this.images.length; i++) {
                let reader = new FileReader();
                reader.onload = (e) => {
                    this.$refs.image[i].src = reader.result;
                    console.log(this. image[i].src);
                };
                reader.readAsDataURL(this.images[i]);
            }
        },

    }
}

和我的控制器上传多个图像。它有效吗?

public function addProductImages(Request $request){
    if($request->isMethod('post')){
        $data=$request->all();
        dd($data);
        if($request->hasFile('images')){
            $images=$request->file('images');

            foreach($images as $key=>$image){
                $productImage=new ProductsImage();
                $image_tmp=Image::make($image);
                $extension=$image->getClientOriginalExtension();
                $imageName=rand(111,999999).time().'.'.$extension;
                $large_image_path='backend/dist/products/alt/large/'.$imageName;
                $small_image_path='backend/dist/products/alt/small/'.$imageName;
                Image::make($image_tmp)->save($large_image_path);
                Image::make($image_tmp)->resize(520,600)->save($small_image_path);
                $productImage->image=$imageName;
                $productImage->product_id='1';
                $productImage->save();
            }
        }
    }
}

【问题讨论】:

    标签: laravel vue.js


    【解决方案1】:

    如果您尝试预览上传的图片,您的代码可以简化为:

    <div id="app">
    <input type="file" class="form-control" multiple accept="image/jpeg" @change="uploadImage"/>
    <div  v-for="(image, key) in images" :key="key">
         <img :src="image.src" class="preview" style="width:200px;"/>
          {{ image.file.name }}
     </div>
      </div>
    </template>
    
    <script>
    export default {
        data() {
            return {
                images: [],
    
            }
        },
        methods: {
            uploadImage(e) {
                var selectedFiles = e.target.files;
                for (let i = 0; i < selectedFiles.length; i++) {
                    let img = {
                        src: URL.createObjectURL(selectedFiles[i]),
                        file: selectedFiles[i],
                    }
                    this.images.push(img);
                }
            },
    
        }
    }
    </script>
    

    【讨论】:

    • 非常感谢...但不适用于控制器。你能帮助我吗 ?我已经编辑了我的问题
    猜你喜欢
    • 2022-10-07
    • 2020-11-28
    • 2020-09-27
    • 2020-11-15
    • 2018-02-16
    • 2020-09-13
    • 2020-09-20
    • 2020-09-25
    • 1970-01-01
    相关资源
    最近更新 更多