How do I preload images into dropzone.js

后端 未结 3 1946
野的像风
野的像风 2020-12-23 11:29

I have a dropzone.js instance on a web page with the following options:

autoProcessQueue:false
uploadMultiple:true
parallelUploads:20
maxFiles:20


        
相关标签:
3条回答
  • 2020-12-23 12:19

    Proper way to do it is to use .emit method provided by on dropzone js to add a file and thumbnail to preload images from the server. See sample code below. Taken from https://github.com/enyo/dropzone/wiki/FAQ#how-to-show-files-already-stored-on-server

    // Create the mock file:
    var mockFile = { name: "Filename", size: 12345 };
    
    // Call the default addedfile event handler
    myDropzone.emit("addedfile", mockFile);
    
    // And optionally show the thumbnail of the file:
    myDropzone.emit("thumbnail", mockFile, "/image/url");
    

    .emit method from dropzone will trigger init function and if you have any addedfile event callback written for it. e.g. I am using addedfile event add remove button and also attached delete image functionality.

    0 讨论(0)
  • 2020-12-23 12:22

    I trying this code and it's working for me :

    Dropzone.options.myDropzone = {
      init: function() {
        let myDropzone = this;
    
        // If you only have access to the original image sizes on your server,
        // and want to resize them in the browser:
        let mockFile = { name: "Filename 2", size: 12345 };
        myDropzone.displayExistingFile(mockFile, "https://i.picsum.photos/id/959/600/600.jpg");
    
        // If the thumbnail is already in the right size on your server:
        let mockFile = { name: "Filename", size: 12345 };
        let callback = null; // Optional callback when it's done
        let crossOrigin = null; // Added to the `img` tag for crossOrigin handling
        let resizeThumbnail = false; // Tells Dropzone whether it should resize the image first
        myDropzone.displayExistingFile(mockFile, "https://i.picsum.photos/id/959/120/120.jpg", callback, crossOrigin, resizeThumbnail);
    
        // If you use the maxFiles option, make sure you adjust it to the
        // correct amount:
        let fileCountOnServer = 2; // The number of files already uploaded
        myDropzone.options.maxFiles = myDropzone.options.maxFiles - fileCountOnServer;
      }
    };
    
    0 讨论(0)
  • 2020-12-23 12:25

    Dropzone is so strong and awesome that you can do anything on it .
    Steps to Follow -- >

    1)First of all you will have to create a server side script which will get all the filenames and its size and send it as json response.
    PHP code :

      foreach($myitemfiles as $file){ //get an array which has the names of all the files and loop through it 
            $obj['name'] = $file; //get the filename in array
            $obj['size'] = filesize("uploadsfolder/".$file); //get the flesize in array
            $result[] = $obj; // copy it to another array
          }
           header('Content-Type: application/json');
           echo json_encode($result); // now you have a json response which you can use in client side 
    

    2)Now you can use the response to display the uploaded files.Write the below code inside the dropzone init function
    Javascript Code :

      init: function() {
    
          var thisDropzone = this;
    
            $.getJSON('get_item_images.php', function(data) { // get the json response
    
                $.each(data, function(key,value){ //loop through it
    
                    var mockFile = { name: value.name, size: value.size }; // here we get the file name and size as response 
    
                    thisDropzone.options.addedfile.call(thisDropzone, mockFile);
    
                    thisDropzone.options.thumbnail.call(thisDropzone, mockFile, "uploadsfolder/"+value.name);//uploadsfolder is the folder where you have all those uploaded files
    
                });
    
            });
    }
    

    Note : don't take the whole file url path in filename just take the filename itself thats it .
    This works

    0 讨论(0)
提交回复
热议问题