Fine Uploader: le fichier est vide

J’essaie d’intégrer “Fine Uploader” dans mon propre CMS. Après un téléchargement réussi, je supprime le programme de téléchargement pour afficher un lien vers le fichier avec un bouton de suppression à côté. Le problème est que chaque téléchargement échoue si le délai après le dernier téléchargement est trop court (moins de ~ 30 secondes). Le problème se produit uniquement sur les serveurs Web, pas sur mon serveur local.

uploader = $('.file-uploader').fineUploader({ request: { endpoint: fullpath+'/detailseite/upload/tmp' }, validation: { allowedExtensions: extensions }, retry: { enableAuto: true }, text: { uploadButton: '
File hochladen
' }, multiple: false }).on('progress', function (id, fileName, uploadedBytes, totalBytes) { $('.new_elements:not(.disabled),.update_elements:not(.disabled)').addClass('disabled'); }).on('complete', function(event, id, fileName, responseJSON) { if (responseJSON.success){ //uploader.fineUploader('reset'); file_name = responseJSON.name; $('.file-uploader').html('<a target="_blank" href="https://stackoverflow.com/questions/16276284/fine-uploader-file-is-empty/files/tmp/'+file_name+'" >'+file_name+''); $('.file-uploader').append('<a href="https://stackoverflow.com/questions/16276284/fine-uploader-file-is-empty//contentmanagement/file_loeschen/tmp/'+file_name+'/dokument" class="delete_imageu">'); $('.new_elements,.update_elements').removeClass('disabled'); } }); $(document).off('click','.'+element_id+' a.delete_imageu'); $(document).on('click','.'+element_id+' a.delete_imageu', function() { var url = $(this).attr('href'); $.ajax({ type: "POST", url: url, success: function() { $('.'+element_id).children().remove(); $('.'+element_id).html('<div class="file-uploader" id="">
'); name = element_id; //uploader.fineUploader('reset'); uploader = $('.'+element_id+' .file-uploader').fineUploader({ request: { endpoint: fullpath+'/detailseite/upload/tmp' }, validation: { allowedExtensions: extensions }, retry: { enableAuto: true }, text: { uploadButton: '
File hochladen
' }, debug: true, multiple: false }).on('progress', function (id, fileName, uploadedBytes, totalBytes) { $('.new_elements:not(.disabled),.update_elements:not(.disabled)').addClass('disabled'); }).on('complete', function(event, id, fileName, responseJSON){ if (responseJSON.success){ file_name = responseJSON.name; $(this).html('<a target="_blank" href="https://stackoverflow.com/questions/16276284/fine-uploader-file-is-empty/files/tmp/'+file_name+'" >'+file_name+''); $(this).append('<a href="https://stackoverflow.com/questions/16276284/fine-uploader-file-is-empty//contentmanagement/file_loeschen/tmp/'+file_name+'/dokument" class="delete_imageu">'); $('.new_elements,.update_elements').removeClass('disabled'); } }); } }); return false; });

Sortie de débogage:

 [FineUploader] Processing 1 files or inputs... jquery.fineuploader-3.5.0.min.js:4 [FineUploader] Sending upload request for 1 jquery.fineuploader-3.5.0.min.js:4 [FineUploader] xhr - server response received for 1 jquery.fineuploader-3.5.0.min.js:4 [FineUploader] responseText = {"error":"File is empty"} jquery.fineuploader-3.5.0.min.js:4 [FineUploader] Waiting 5 seconds before retrying zztailtoddle_lo.mp3... jquery.fineuploader-3.5.0.min.js:4 [FineUploader] Retrying zztailtoddle_lo.mp3... jquery.fineuploader-3.5.0.min.js:4 [FineUploader] Sending upload request for 1 jquery.fineuploader-3.5.0.min.js:4 [FineUploader] xhr - server response received for 1 jquery.fineuploader-3.5.0.min.js:4 [FineUploader] responseText = {"success":true,"name":"zztailtoddle_lo38.mp3","type":"mp3"} 

Code côté serveur

 class qqFileUploader { private $allowedExtensions = array(); private $sizeLimit = 10485760; private $file; function __construct(array $allowedExtensions = array(), $sizeLimit = 10485760){ $allowedExtensions = array_map("strtolower", $allowedExtensions); $this->allowedExtensions = $allowedExtensions; $this->sizeLimit = $sizeLimit; $this->checkServerSettings(); if (isset($_GET['qqfile'])) { $this->file = new qqUploadedFileXhr(); } elseif (isset($_FILES['qqfile'])) { $this->file = new qqUploadedFileForm(); } else { $this->file = false; } } private function checkServerSettings(){ $postSize = $this->toBytes(ini_get('post_max_size')); $uploadSize = $this->toBytes(ini_get('upload_max_filesize')); if ($postSize sizeLimit || $uploadSize sizeLimit){ $size = max(1, $this->sizeLimit / 1024 / 1024) . 'M'; die("{'error':'increase post_max_size and upload_max_filesize to $size'}"); } } private function toBytes($str){ $val = sortingm($str); $last = strtolower($str[strlen($str)-1]); switch($last) { case 'g': $val *= 1024; case 'm': $val *= 1024; case 'k': $val *= 1024; } return $val; } /** * Returns array('success'=>true) or array('error'=>'error message') */ function handleUpload($uploadDirectory, $replaceOldFile = false,$thumbnail = false,$width = null,$height = null){ if (!$this->file){ return array('error' => 'No files were uploaded.'); } $size = $this->file->getSize(); if ($size == 0) { return array('error' => 'File is empty'); } if ($size > $this->sizeLimit) { return array('error' => 'File is too large'); } $pathinfo = pathinfo($this->file->getName()); $filename = normalize_ssortingng($pathinfo['filename']); $ext = $pathinfo['extension']; if($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)){ $these = implode(', ', $this->allowedExtensions); return array('error' => 'File has an invalid extension, it should be one of '. $these . '.'); } if(!$replaceOldFile){ /// don't overwrite previous files that were uploaded while (file_exists($uploadDirectory . $filename . '.' . $ext)) { $filename .= rand(10, 99); } } if ($this->file->save($uploadDirectory.$filename.'.'.$ext)){ $src = $uploadDirectory.$filename.'.' . $ext; return array('success'=> true,'name' => $filename. '.' .$ext,'type' => $ext); } else { return array('error'=> 'Could not save uploaded file.' . 'The upload was cancelled, or server error encountered'); } } 

}

D’après la discussion dans la section des commentaires, il semble que vous renconsortingez des problèmes côté serveur. Peut-être que quelque chose interfère avec la demande? J’ai eu un problème similaire sur mon lieu de travail à un moment donné. Une appliance réseau supprimait le fichier dans la demande (ou peut-être même plus que cela, je ne m’en souviens pas) dans certains cas. Cependant, le fichier réussirait une nouvelle tentative automatique. Je suppose qu’il est également possible que quelque chose ne soit pas tout à fait correct dans votre gestionnaire de requêtes PHP. Vous aurez probablement besoin de creuser un peu plus. Cela peut impliquer d’inspecter la demande lorsqu’elle frappe votre gestionnaire PHP et de la comparer à la demande en fonction de l’onglet réseau de Chrome / Firebug ou d’un proxy (tel que Charles). Si les demandes ne correspondent pas, il y a quelque chose qui intercepte la demande et la dérange. S’ils correspondent et que la demande semble correcte, il y a peut-être un problème dans votre code PHP.