2010-10-13 17 views
-1

J'ai écrit une application Facebook en PHP et je dois être en mesure de permettre à l'utilisateur de télécharger une image sur mon serveur. J'ai utilisé ce code:Problèmes de téléchargement de fichiers PHP

<?php 
include_once('facebook.php'); 
$appapikey = 'API KEY HERE'; 
$appsecret = 'SECRET KEY HERE'; 
$facebook = new Facebook($appapikey, $appsecret); 
$fb_user = $facebook->require_login(); 

if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { 
    $filename = basename($_FILES['uploaded_file']['name']); 
    $ext = substr($filename, strrpos($filename, '.') + 1); 
    if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && 
    ($_FILES["uploaded_file"]["size"] < 350000)) { 
     $newname = dirname(__FILE__).'/upload/zbt_'.$fb_user.'.jpg'; 
     if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) { 
     header("Location: http://majik.zbrowntechnology.info/display.php"); 
     } else { 
     header("Location: home.php?Fatal"); 
     } 
} else { 
    header("Location: home.php?Fatal"); 
    } 
} else { 
header("Location: home.php?Fatal"); 
} 
?> 

mais je ne peux pas réellement enregistrer le fichier dans le répertoire. J'ai fait un peu de jouer avec le code et pense que le problème réside dans le déplacement du fichier dans cette ligne:

si ((move_uploaded_file ($ _ FICHIERS ['uploaded_file'] ['tmp_name'], $ newname))) {....

+0

Quel type d'application est-il? Est-ce iframe/fbml (lequel?) Ou une application tierce? – zerkms

+1

vous donnez la permission de ce répertoire? –

+0

Quel 'enctype' de votre formulaire. Il devrait être 'multipart/form-data' – pltvs

Répondre

0

Ce n'est pas facile avec l'application FBML.

D'abord - vous devez indiquer votre formulaire au script sur votre domaine

<form enctype="multipart/form-data" 
     action="http://your.domain/upload.php" 
     method="post" > 

suivant: ce upload.php vous devez gérer le fichier téléchargé, la traiter, faire tout ce que vous voulez et après vous devez rediriger vers l'application de toile FBML sur facebook.com.

+0

Voici comment l'application est configurée: L'utilisateur charge la page de canevas FB. Sur la page de canevas FB, il y a un iframe HTML. Cette iframe contient la fonctionnalité réelle de l'application. (Le formulaire de téléchargement) L'utilisateur choisit un fichier, puis clique sur le bouton de téléchargement. Le formulaire POST les données de formulaire au script de téléchargement. Le script redirige ensuite vers la page d'affichage. Toute la redirection est faite à l'intérieur de l'iframe. –

+0

Ce workflow semble être correct. Eh bien, déboguer votre script puis – zerkms

+0

je l'ai compris. Le problème était le code que j'avais utilisé pour obtenir l'identifiant de l'utilisateur actuel sur Facebook. Correction en n'incluant pas ce code, mais en ajoutant l'ID de l'utilisateur à la fin de chaque URL. Je vous remercie tous pour votre aide, et je vais ajouter des noms de oyur et des images de profil à la page des crédits! Merci! –