2013-07-02 6 views
1

Vous pouvez voir le problème ici http://bmi.sf.net/test.html.Bootstrap FileUpload tableau vide après effacer

Pour le code exact que j'utilise, faites un clic droit sur ce site Web et sélectionnez View source dans le menu. J'utilise Jasny bootstrap fileupload plugin. J'ai un formulaire dans lequel ce plugin est utilisé. Le formulaire soumet à un fichier php dans lequel le tableau $ _FILES est manipulé.

Dans le code ci-dessus, j'ai utilisé le plugin formulaire jQuery pour voir l'aperçu en direct de la soumission du formulaire. Le php est tout simplement fait une chose: print_r($_FILES)

Il travaille beaucoup, sauf quand la série d'action suivante se produit, le tableau $ _FILES est vide:

  • L'utilisateur sélectionne un fichier. Affiche la sortie php normale.
  • Ensuite, l'utilisateur efface le formulaire en utilisant le bouton «x». Affiche le tableau vide comme prévu.
  • L'utilisateur charge un nouveau fichier. Maintenant, le tableau est vide par rapport aux attentes.

Comment résoudre ce problème?

Si l'utilisateur ne supprime pas le formulaire en premier mais charge un nouveau fichier directement, le tableau n'est pas vide. Cependant, chaque utilisateur ne le fera pas, donc je veux résoudre le problème donné.

Répondre

1

Cela ressemble à une condition de concurrence. Le plugin fileupload efface le nom du <input type="file"> et définit un <input type="hidden"> pour indiquer au serveur la différence entre l'appui sur clear ou submit sans modification d'un formulaire normal. Cependant dans votre cas, vous ne voulez pas ce comportement.

Pour un correctif rapide et incorrect, définissez toujours le nom du <input type="file"> en cas de modification.

$('#filep').on('change', function() { $(this).attr('name', 'filep') }); 
+0

Cela fait l'affaire :) – yolo