Bonjour à tous,

Après avoir suivie le tutoriel sur l'upload en drag&drop, j'ai essayé en local et tous marche, cependant je l'ai hébergé sur mon serveur 1and1 et rien ne marche...

J'ai suivie l'explication de "cgreg" (déposée en commentaire sur la vidéo), car mon problème était bien de là (getallheaders() non reconnu par mon serveur 1and1), cependant lorsque j'envoie les données à upload.php j'envoie aussi le nom d'un album "xhr.setRequestHeader("name-album", nameAlbum);", comment pourrais-je faire pour le récupérer dans upload.php...

Sachant que maintenant je n'utilise pas getallheaders() mais $_SERVERS qui lui marche pour le type et le name...

Portion du fichier dropfile.js :

xhr.open('post', opts.script, true);
xhr.setRequestHeader('content-type', 'multipart/form-data');
xhr.setRequestHeader('x-file-type', file.type);
xhr.setRequestHeader('x-file-size', file.fileSize);
xhr.setRequestHeader('x-file-name', file.fileName);
/* On récupère le nom de l'album puis on le transfert à upload.php */
var nameAlbum = $('select option:selected').text();
xhr.setRequestHeader("name-album", nameAlbum);
/* Fin du transfert de name-album */
xhr.send(file);

Fichier dropfile_upload.php

<?php
header('content-type: application/json');
require 'dropfile_fonction.php';
require '../../config.php';
require '../../class/photo.class.php';
$photo = new photo();
$h = $_SERVER;
$o = new stdClass();
$source = file_get_contents('php://input');
$types = Array('image/png','image/gif','image/jpeg');
if ( !in_array($h'HTTP_X_FILE_TYPE'],$types)){
    $o->error = 'Format non supporté !';
}else{
    $id = recupererIDimage();
    if ( substr($h'HTTP_X_FILE_TYPE'], -3) == 'peg' ){
        $ext = 'jpg';
    }else{
        $ext = substr($h'HTTP_X_FILE_TYPE'], -3);
    }
    $prefixe = "IMG";
    $date = date(dmy);
    $heure = date(His);
    /* On ajoute le nom de l'album au nom de l'image */
    $album = $h'je ne sais pas quoi mettre ici'];
    $name = $prefixe.$id.'_'.$date.'_'.$heure.'.'.$ext;
    $url = "admin/uploads/".$album."/".$name;
    $photo->ajouter($url, $album);
    file_put_contents('../uploads/'.$album.'/'.$name,$source);
    $o->name = $h'HTTP_X_FILE_NAME'];
    $o->content = '<img src="../admin/uploads/'.$album.'/'.$name.'"/>';
}
echo json_encode($o);
?>

4 réponses


Grafikart
Réponse acceptée

Si tu print_r $_SERVER tu vois quoi ?

tonymx227
Auteur
Réponse acceptée

En mettant un print_r() dans dropfile_upload.php j'ai une erreur mais je vois le print_r() dans la console de Google Chrome :

jquery.min.js:28Uncaught Invalid JSON: Array
(
    [HTTP_X_FILE_TOTO] => toto // C'est ce que je veux
)
{"name":"hebus_253003_1440x900.jpg","content":"<img src=\"..\/admin\/uploads\/\/IMG261_220911_154434.jpg\"\/>"}

Du coup problème résolu ? XD

Oui je viens de le résoudre, je penserais au print_r plus souvent merci ;)