Dropzone.js - Display existing files on server

前端 未结 5 1881
我寻月下人不归
我寻月下人不归 2020-12-15 10:04

I\'m currently using dropzone.js v3.10.2 I am having issues displaying my existing files I have already uploaded. I am more than competent with php however I have limited kn

5条回答
  •  眼角桃花
    2020-12-15 10:41

    I'm leaving here the solution that worked for me. (Dropzone v5.7.0 and Codeigniter v3.1.11)

    1. Use Dropzone option init
    2. Make AJAX call to back-end script which returns json encoded array of objects containing images' info (PHP way above in the question, Codeigniter way here)
    3. Use jQuery each function to iterate on every object containing image info
    4. Use the snippet here: https://github.com/enyo/dropzone/wiki/FAQ#how-to-show-files-already-stored-on-server to display each image

    in my App controller:

    public function ilan_fotolari($ilan_id = 0)
    {
        $this->load->helper('ilan');
        $dirPath = './assets/uploads/'.ilan_dir($ilan_id);
        $this->load->helper('file');
        $file_names = get_filenames($dirPath);
        $mocks = [];
        foreach ($file_names as $file_name) {
            $mock['name'] = $file_name;
            $dirUrl = base_url('assets/uploads/'.ilan_dir($ilan_id));
            $mock['url'] = $dirUrl.$file_name;
            $mocks[] = $mock;
        }
        $this->output
            ->set_content_type('application/json')
            ->set_output(json_encode($mocks));
    }
    

    in my script.js:

    Dropzone.options.ilanFotoAlani = {
        paramName: "foto", // The name that will be used to transfer the file
        maxFilesize: 5, // MB
        maxFiles: 9,
        resizeWidth: 1000,
        resizeHeight: 644,
        resizeMimeType: 'image/jpeg',
        addRemoveLinks: true,
        dictDefaultMessage: 'Fotoğraf sürükle veya seç',
        dictFileTooBig: 'Fotoğraf boyutu en fazla 5MB olmalı',
        dictRemoveFile: 'Fotoğrafı sil',
        dictCancelUpload: 'İptal et',
        dictMaxFilesExceeded: 'En fazla 9 fotoğraf yükleyebilirsin',
        init: function () {
            let myDropzone = this;
            $.ajax({
                type: 'get',
                url: '/ilan-fotolari',
                success: function(mocks){
                    $.each(mocks, function(key,value) {
                        let mockFile = { name: value.name, size: 1024 };
                        myDropzone.displayExistingFile(mockFile, value.url);
                    });
                },
                error: function(xhr, durum, hata) {
                    alert("Hata: " + hata);
                }
            });
        }
    };
    

    I have mixed up solutions from different solutions into this.

提交回复
热议问题