Bonjour,
je l'ai développé en local, tous fonctionne bien mais dès que je passe en ligne, (serveur 1&1),
j'ai une erreur du type:
Uncaught SyntaxError: Unexpected token <
en regardant plus loin, le XHR me retourne une erreur :
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">around<h4>A PHP Error was encountered</h4>around<p>Severity: Notice</p> around<p>Message: Undefined index: x-file-type</p> around<p>Filename: controllers/upload.php</p> around<p>Line Number: 24</p>around</div>{"error":"Format non support\u00e9"}
j'ai fait un console.log de file :
File {webkitRelativePath: "", lastModified: 1410875544000, lastModifiedDate: Tue Sep 16 2014 15:52:24 GMT+0200 (Paris, Madrid (heure d’été)), name: "SMTOM.jpeg", type: "image/jpeg"…}lastModified: 1410875544000lastModifiedDate: Tue Sep 16 2014 15:52:24 GMT+0200 (Paris, Madrid (heure d’été))name: "SMTOM.jpeg"size: 158328type: "image/jpeg"webkitRelativePath: ""
Est-ce normale que webkitRelativePath est vide ?
Si quelqu'un à une idée, merci d'avance
Salut, salut !
Tu as un "undefined index", ce qui signifie tout simplement que la clé "x-file-type" n'est pas définie. Il te faudrait "var_dumper" (comme le dit si bien Jonathan) ton array $_FILES et voir si celui-ci n'est pas vide, ou alors regarde du côté de ta console JS si tu n'as pas une erreur.
Quel NUL pourquoi je n'ai pas pensé à utiliser le var_dump() sur $h, j'aurais trouvé dirrect le prob !!!
En tout cas merci pour cette illumination ! Sur la page du tuto, il est dit de remplacer les x-file-name par HTTP_X_FILE_NAME seulement je ne savais pas vraiment si il fallait les remplacer partout donc j'ai essayé mais visiblement il fallait remplacer uniquement dans ma fonction do_upload().
Sujet résolu ^^
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">around<h4>A PHP Error was encountered</h4>around<p>Severity: Notice</p> around<p>Message: Undefined index: x-file-type</p> around<p>Filename: controllers/upload.php</p> around<p>Line Number: 24</p>around</div>
Je suis vraiment désolé mais je ne voix pas bien ce que je peut faire avec se code ! j'ai bien regardé ligne 24 mais rien d'annormale !
public function do_upload() {
header('content-type: application/json');
//$h = getallheaders();
$h = $_SERVER;
$o = new stdClass();
//RECUPERER LE FICHIER
$source = file_get_contents('php://input');
$types = Array('image/png', 'image/gif', 'image/jpeg', 'image/jpg');
$folder = './img/logo/';
if(!in_array($h['x-file-type'], $types)){
$o->error = 'Format non supporté';
}else {
if(isset($h['x-param-value'])){
unlink($folder.$h['x-param-value']);
}
//ECRIRE LE FICHIER
file_put_contents('./img/logo/'.$h['x-file-name'], $source);
$o->name = $h['x-file-name'];
$o->content = '<div class="container imgload">
<img class="img-responsive" src="'.base_url().'img/logo/'.$h['x-file-name'].'"/>
</div>';
$this->load->model('ct_model');
$id = $this->uri->segment(3);
$data= array(
'Logo' => $h['x-file-name']
);
$this->ct_model->majClientLogo($id, $data);
}
echo json_encode($o);
}
ligne 24 c'est juste avant de tester le type de fichier