Undefined index: fichier
Je suis le undefined index erreur que je viens pour la première fois dans mon formulaire de chargement de la page ou si je passe à la page suivante et cliquez sur le bouton de retour, alors j'ai le même message d'erreur.
Si j'upload un fichier alors qu'il fonctionne très bien et le message d'erreur s'éloigne.
J'ai aussi essayé ceci:
global $file;
if (!isset($file)) {
$file = '';
}
Voici mon code:
<form id="uploadForm" name="upload" enctype="multipart/form-data"/>
<fieldset>
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="file" />
<?php
echo '<pre>';
var_dump($_REQUEST['file']);
echo '</pre>';
$uploaded = new upload;
//set Max Size
$uploaded->set_max_size(350000);
//Set Directory
$uploaded->set_directory("data");
//Set Temp Name for upload.
$uploaded->set_tmp_name($_FILES['file']['tmp_name']);
//Set file size
$uploaded->set_file_size($_FILES['file']['size']);
//set file type
$uploaded->set_file_type($_FILES['file']['type']);
//set file name
$uploaded->set_file_name($_FILES['file']['name']);
//start copy process
$uploaded->start_copy();
if($uploaded->is_ok())
echo " upload is doen.";
else
$uploaded->error()."<br>";
?>
<div class="filesize">JPG minimaal 800x60 pixels max. 2Mb</div>
<a href="" class="submit" title="Upload your own phooto"><span> Upload your own photo </span></a>
upload_inc.php
<?
class upload
{
var $directory_name;
var $max_filesize;
var $error;
var $user_tmp_name;
var $user_file_name;
var $user_file_size;
var $user_file_type;
var $user_full_name;
function set_directory($dir_name =".")
{
$this->directory_name = $dir_name;
}
function set_max_size($max_file = 2000000)
{
$this->max_filesize = $max_file;
}
function error()
{
return $this->error;
}
function is_ok()
{
if(isset($this->error))
return FALSE;
else
return TRUE;
}
function set_tmp_name($temp_name)
{
$this->user_tmp_name = $temp_name;
}
function set_file_size($file_size)
{
$this->user_file_size = $file_size;
}
function set_file_type($file_type)
{
$this->user_file_type = $file_type;
}
function set_file_name($file)
{
$this->user_file_name = $file;
$this->user_full_name = $this->directory_name."/".$this->user_file_name;
}
function start_copy()
{
if(!isset($this->user_file_name))
$this->error = "You must define filename!";
if ($this->user_file_size <= 0)
$this->error = 'File size error (0):' . $this->user_file_size . 'KB <br>';
if ($this->user_file_size > $this->max_filesize)
$this->error = 'File size error (1):' . $this->user_file_size . 'KB<br>';
if($this->user_file_type != "image/jpeg")
$this->error = "the image must be jpeg extension";
if (!isset($this->error))
{
$filename = basename($this->user_file_name);
if (!empty($this->directory_name))
$destination = $this->user_full_name;
else
$destination = $filename;
if(!is_uploaded_file($this->user_tmp_name))
$this->error = "File " . $this->user_tmp_name . " is not uploaded correctly.";
if (!move_uploaded_file ($this->user_tmp_name,$destination))
$this->error = "Impossible to copy " . $this->user_file_name . " from your folder to destination directory.";
}
}
}
?>
- Merci pour le merveilleux et titre descriptif.
Vous devez vous connecter pour publier un commentaire.
"Undefined index"
signifie que vous essayez de lire un élément de tableau qui n'existe pas.Votre problème semble être que vous êtes en train de lire le téléchargement de données qui n'existe pas encore: Lors de la première visite de votre formulaire d'upload, il n'y a pas de
$_FILES
tableau (ou plutôt, il n'y a rien), parce que la forme n'a pas été soumis. Mais puisque vous n'avez pas de vérifier si le formulaire a été soumis, ces lignes net vous avez une erreur:Ils sont tous en train de lire la valeur de
$_FILES['file']
de les passer à l'méthodes de$uploaded
.Ce que vous avez besoin est d'une case à l'avance:
L'erreur est probablement dans votre classe upload. Le message d'erreur est assez clair, si c'est bien le message que vous recevez il y a probablement une ligne quelque part dans cette classe qui ressemble à un tableau clé que j'ai nommé 'fileUpload'.
Il suffit de faire une recherche dans votre code "fileUpload', et ajouter quelque chose à vérifier si la clé est définie, c'est à dire