7
votes

Pourquoi php Renommer () corrompre mon fichier?

J'utilise Plupload pour effectuer un téléchargement de plusieurs fichiers sur mon serveur. En utilisant cela, il existe un paramètre 'URL:' upload.php '. upload.php attrape les fichiers comme ils sont reçus et peuvent les recombiner si elles sont chunées. Une fois le fichier complet reçu, il envoie une réponse à la page d'origine, affichant une icône de cocher verte.

J'ai ajouté du code à cette page, après tout le code principal pour manipuler les photos que j'ai téléchargées. Mon plan est de créer trois copies de mon image de taille complète, LG, Med et Small. J'ai eu cette partie de travail, mais puis j'ai décidé de renommer le fichier original pour correspondre à mon schéma de dénomination. P>

Je reçois maintenant un fichier renommé corrompu et que mes trois petites images sont également corrompues. P>

//get the original file info
$filepath = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
$filepathinfo = pathinfo($filepath.$fileName);//fileName is used previously in the file

//rename original file to a unique name
$finding_id = 'xyz';
$file_name_new = uniqid($client_id . '-' . $finding_id . '-', true); //doesn't include extension
//rename($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);
//copy($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);


3 commentaires

Le processus a-t-il téléchargé le fichier terminé? Le descripteur de fichier était-il fermé? Tous les tampons ont été rougrés?


Selon cette solution: Stackoverflow.com/questions/3159431/PHP-CHANGE -File-Extensio n , une solution de contournement est d'utiliser la copie. Pourtant, ça ne devrait pas faire ça.


@Horus - J'ai essayé copier, mais j'ai eu d'autres résultats. Il doit y avoir quelque chose avec ce pluploader, que je n'ai jamais utilisé auparavant.


3 Réponses :


0
votes

écrivez-vous vous-même au fichier vous-même? Si tel est le cas, le problème peut être qu'il vous manque un appel à fflush ou fcfose . (Le dernier morceau du fichier ne pas être écrit et le dossier n'étant plus là quand PHP se fait tourner pour l'écrire. Cela ne devrait pas arriver si vous utilisez Linux ou une autre unix, mais je pourrais l'envisager sous Windows.)


1 commentaires

Nope, ne faisant aucune écriture dans le dossier de la mienne. Il suffit de laisser le PLUPLOAD gérer cela. Pour autant que je puisse dire que ce fichier utilise Fclose de manière appropriée.




2
votes

J'ai oublié que j'ai eu la fonctionnalité de chunking allumé. Doit avoir tourné pour tester quelque chose. Pour une raison quelconque, lorsque le script exécutait le dernier morceau du fichier n'avait pas encore été entièrement annexé. Merci pour toute l'entrée de toute façon!


0 commentaires