2011-05-03 4 views
3

J'ai un problème avec le téléchargement. sur le client cela fonctionne très bien (toutes les fonctionnalités comme le bouton, la progression, etc .. et le fichier peut être téléchargé sur le client) mais sur l'hébergement (serveur), le fichier ne peut pas être téléchargé.ne peut pas télécharger le fichier en utilisant télécharger

sur le serveur, l'autre (bouton, progression, script de téléchargement) fonctionne, seul le fichier que je veux télécharger ne peut pas être téléchargé.

sinon j'ai un processus d'insérer à la base de données (le chemin du fichier), je peux mettre l'insert requête SQL sur le script pour le téléchargement processus, la requête fonctionne, mais le fichier ne peut être téléchargé

mon script (upload_file. php):

<?php  

    $file_id   = $_POST['file_id']; 

    if (!empty($_FILES)) 
{ 

    $tempFile = $_FILES['Filedata']['tmp_name']; 
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';  
    $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 

     $destinationFile = "files/". $_FILES['Filedata']['name'];   
     move_uploaded_file($tempFile,$targetFile); 



     //additional - query to insert the path 

     include("database_connection.php");  

     $query = "insert into file (file_id,path) values ('$file_id','$destinationFile')"; 
     $result = mysql_query($query);  

     mysql_close(); 
} ?> 

et le javascript:

$('#file').uploadify 
({ 
    'uploader' : '/myweb/shockwaves/uploadify.swf', 
    'script'  : '/myweb/process/upload_file.php', 
    'cancelImg' : '/myweb/images/uploadify/cancel.png', 
    'folder'  : '/myweb/files', 
    'auto'  : true,  
    'buttonText' : 'Upload', 
    'scriptData' : {'file_id':'001'} 
}); 

merci :)

+2

Définir "ne fonctionne pas". Avez-vous des erreurs? Journaux Avez-vous parcouru votre code avec un débogueur? – lucifurious

Répondre

3

Nous avons besoin de plus amples informations, mais les possibilités qui viennent à l'esprit:

  1. Votre formulaire HTML est incorrect.
  2. Le fichier est trop volumineux.
  3. Le nom de fichier est trop long.
  4. Problème d'autorisation d'écriture de fichier sur le serveur.

Assurez-vous que formulaire HTML a "enctype"

Assurez-vous de votre formulaire HTML sur la page a enctype="multipart/form-data" par exemple

<form action="" method="POST" enctype="multipart/form-data"> 

Diagnostiquer erreur PHP/fichier Erreur d'écriture

Si c'est un problème fichier/autorisations, vous pourriez être en mesure de repérer une erreur de PHP, essayez d'activer le rapport d'erreur sur la page ci-dessous:

<?php 
    error_reporting(E_ALL); 
    ini_set("display_errors", 1); 
?> 

changement file_id être généré automatiquement

Vous s devrait également changer votre base de données afin qu'elle génère votre file_id (c.-à-d. incrémentation automatique clé primaire/identité), plutôt que de passer une entrée. Si vous ne l'avez pas auto-générer, vous courez le risque de dupliquer file_id entrées (ou une requête échouée si la colonne file_id est une clé primaire comme il se doit être).

vous êtes sans doute aussi pas en fait en utilisant 'scriptData' : {'file_id':'001'} car cela signifierait que vous insérez le file_id de 001 pour chaque enregistrement. Cependant, même la génération de cette taille risque de: a) choisir les vôtres file_id et corrompre vos données, b) les erreurs lorsque JS est désactivé (uploadify ne fonctionnera pas, mais le fichier fonctionnera probablement encore) et c) dupliquer file_id génération.

Votre échantillon est vulnérable à l'injection SQL

Votre échantillon actuel est particulièrement vulnérable à l'injection SQL, comme vous n'êtes pas fuyez vos paramètres. Vous pourriez rejeter ceci comme «oh c'est correct c'est une application interne donc il n'y a aucun risque de sécurité» mais même l'injection accidentelle de SQL peut causer des problèmes. S'il s'agit d'un site Web public, vous venez d'exposer votre base de données. Je vais supposer que c'est un échantillon réduit, mais même dans ce cas, il est déconseillé d'afficher un SQL sans échappement (au moins sans commentaire), car cela amène d'autres développeurs moins expérimentés à copier/coller quelque chose dans une application.

+1

oui c'est, fichier d'autorisations d'écriture problème sur le serveur est le problème :) maintenant il fonctionne très bien, thx – bungdito

+1

effectivement le fichier que je génère sur javascript, pas toujours 001 pour tous les enregistrements. 001 sur le dessus est juste pour un exemple, merci beaucoup. :) – bungdito

+1

@bungdito - mais si le fichier file_id va juste être 001/002/003/004 etc., pourquoi ne pas le générer, donc vous ne risquez jamais que deux clients téléchargent le même file_id? –

Questions connexes