Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Dropzone in modifica

  1. #1

    Dropzone in modifica

    Salve , ho un form e un dropzone che in fase di upload invia i dati all'onsending dei file di dropzone ad un o script php che salva tutto in un db :

    codice:
    
    
    
      if (document.getElementById('myDropzone')) {
    
    
          var drz = new Dropzone("#myDropzone",
          {
              url: "{{route('userLibri.update',['id'=>$record->id])}}",
              autoProcessQueue: false,
              uploadMultiple: true,
              paramName: "file",
              clickable: true,
              maxFilesize: 10, //in mb
              addRemoveLinks: true,
              acceptedFiles: ".jpeg,.jpg,.png,.gif",
              dictDefaultMessage: "Clicca o trascina il tuo file QUI ",
              maxFiles: 3,
              parallelUploads: 3, //di default è 2 se non settato e carica solamente 2 file
    
    
              init: function() {
    
    
              var myDropzone = this;
    
    
                // In edit
                @php
    
    
                    $n=0;
                    foreach ($lista_immagini_libri as $v) :
    
    
                @endphp
    
    
                    let mockFile_immagini_libri{{$n}} = { name: '{{$v->nome_file}}', size: 12345 ,nome_file_originale:'{{$v->token_nome_file_originales }}'};
    
    
                    myDropzone.displayExistingFile(mockFile_immagini_libri{{$n}}, '/uploads/immagini_libri/{{Auth()->user()->id}}/{{$record->id}}/{{ $v->nome_file }}');
    
    
                    $('.dz-upload:last-child').attr('style', 'width:100%');
    
    
                @php
    
    
                    $n++;
                    endforeach;
    
    
                @endphp
    
    
    
    
              $('#button_metti_in_vendita').on("click", function() {
    
    
    
    
    
    
                  var id_users =$('#id_users').val();
                  var titolo = $('#id_class_titolo').val() ;
                  var codice_isbn= $('#id_class_codice_isbn').val() ;
                  var autore= $('#id_class_autore').val() ;
                  var id_stati_conservazione = $('#id_id_stati_conservazione').val();
                  var note= $('#id_class_note').val();
    
    
                  //numero file nella dropzone
                  var numero_file_dropzone =$("#myDropzone").find(".dz-image").length;
    
    
    
    
                  //se non ho titolo
                  if(titolo=='' || titolo==null){
    
    
                      var message ='Non hai inserito il titolo!!!';
                      $('#alertModal').find('.modal-body h3').text(message);
                      $('#alertModal').modal('show');
    
    
                  }else if(codice_isbn=='' || codice_isbn==null){
    
    
                      var message ='Non hai inserito il codice isbn!!!';
                      $('#alertModal').find('.modal-body h3').text(message);
                      $('#alertModal').modal('show');
    
    
                  }else if(autore=='' || autore==null){
    
    
                      var message ='Non hai inserito l\'autore!!!';
                      $('#alertModal').find('.modal-body h3').text(message);
                      $('#alertModal').modal('show');
    
    
                  }else if(id_stati_conservazione=='' || id_stati_conservazione==null ) {
    
    
                      var message ='Non hai selezionato nessuno stato di conservazione!!!';
                      $('#alertModal').find('.modal-body h3').text(message);
                      $('#alertModal').modal('show');
    
    
                  }else if(!numero_file_dropzone) {
    
    
                      var message ='Non hai inserito nessun file!!!';
                      $('#alertModal').find('.modal-body h3').text(message);
                      $('#alertModal').modal('show');
    
    
                  }else{//se non ho nessun errore procedo
    
    
                    alert('pulsante premuto');
    
    
                      var myDropzone = Dropzone.forElement(".dropzone");
                      myDropzone.processQueue();
    
    
                  }
    
    
    
    
    
    
    
    
              });
    
    
    
    
                
    
    
              this.on("sending", function(file, xhr, formData){
                  console.log("sending file");
                  formData.append("id",'{{$record->id}}' );
                  formData.append("_token",'{{csrf_token()}}' );
                  formData.append("_method",'PATCH' );
                  formData.append("id_users", {{ $user->id}} );
                  formData.append("titolo", $('#id_class_titolo').val() );
                  formData.append("codice_isbn", $('#id_class_codice_isbn').val() );
                  formData.append("autore", $('#id_class_autore').val() );
                  formData.append("id_stati_conservazione" ,JSON.stringify( $('#id_id_stati_conservazione').val() )  );
                  formData.append("prezzo" , $('#id_class_prezzo').val());
                  formData.append("note", $('#id_class_note').val() );
    
    
    
    
    
    
              });
    
    
              this.on("success", function(file, response) {
              console.log('great success'+response);
    
    
    
    
                  if(response.success == 0){ // Error
                      var message =response.error;
                      $('#alertModal').find('.modal-body h3').html(message);
                      $('#alertModal').modal('show');
                      var myDropzone = Dropzone.forElement(".dropzone");
                      myDropzone.removeFile(file);
    
    
                  }
    
    
                  if(response.success == 2){
    
    
                      //alert(response.message);
    
    
                      //senza errori mostro il modal
                      $("#successModal").modal("toggle");
                  }
    
    
              });
    
    
    
    
              this.on("addedfile", function(file){
                  if(this.files.length>3){
    
    
                  this.removeFile(file);
    
    
                  }else{
    
    
                      console.log('file added');
    
    
                  }
              });
              }
          });
      };
    In fase di edit , dovrei controllare che i file siano diversi da quelli già salvati nel db , nel caso siano cambiati posso utilizzare sempre l'onsending altrimenti andrebbero mandati via ajax al click , come posso controllare che i file siano quelli già salvati ?

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    L'unico modo che hai per controllare se due file sono uguali è un checksum (md5,sha1 o sha226).

    Quindi hai bisogno del checksum del file del db e quello che l'utente vuole caricare.


    Quello del DB lo puoi passare alla pagina di update, ma potrebbe essere controproducente.

    Per quello da caricare alcuni browser moderni consentono di FileApi ma se non erro il check si limita all'algoritmo md5.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    L'unico modo che hai per controllare se due file sono uguali è un checksum (md5,sha1 o sha226).

    Quindi hai bisogno del checksum del file del db e quello che l'utente vuole caricare.


    Quello del DB lo puoi passare alla pagina di update, ma potrebbe essere controproducente.

    Per quello da caricare alcuni browser moderni consentono di FileApi ma se non erro il check si limita all'algoritmo md5.

    hai qualche esempio pratico ?

    edit trovato (parlo per confronto lato server via php)

    codice:
    if(md5_file($file1) === md5_file($file2)) 
    {
        // Stessa immagine
    } 
    else 
    {
        // Immagine diversa
    }
    Ultima modifica di pippuccio76; 25-02-2023 a 13:26

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.