createElement input de type file : pb d'upload de fichier
Slt,
j'ai le code suivant en javascript, la fonction UpdateCode intervient lors du changement de valeur d'une droplist, elle permet de selectionner un formulaire à creer dans un div
ca marche pour tout ce qui est input de type texte, mais lorsque je veux uploader un fichier, ma lecture echoue
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
function GetAndEmptyChild(nom)
{
var child = document.getElementById(nom);
if(child)
{
while( child.hasChildNodes() )
child.removeChild( child.childNodes[0] );
}
return child;
}
function AddTextInChild(child, texte)
{
var t = document.createTextNode("");
t.data = texte;
child.appendChild(t);
return t;
}
function AddInputTextInChild(child, nom, value, size, max)
{
var input = document.createElement("input");
input.type = 'text';
input.className = 'txt01';
input.name = nom;
input.defaultValue = value;
input.size = size;
input.maxLength = max;
child.appendChild(input);
return input;
}
function AddHiddenInChild(child, nom, value)
{
var hidden = document.createElement("input");
hidden.type = 'hidden';
hidden.name = nom;
hidden.value = value;
child.appendChild(hidden);
return hidden;
}
function AddSubmitInChild(child)
{
var submit = document.createElement("input");
submit.type = "submit";
submit.className = "submit01";
submit.value= "Valider";
child.appendChild(submit);
return submit;
}
function AddBRInChild(child)
{
var br = document.createElement("br");
child.appendChild(br);
}
function AddNBSPInChild(child, n)
{
for(var i=0; i<n; i++){
nbsp = document.createTextNode('\u00A0');
child.appendChild(nbsp);
}
}
function UpdateCode()
{
var index = document.formAddCode.actioncodepromo.selectedIndex;
var div = GetAndEmptyChild("idContents");
var form = document.createElement("form");
form.setAttribute("action", "index.php4?p=2");
form.setAttribute("method", "post");
AddHiddenInChild(form, "idtarif", <?php echo $idtarif; ?>);
AddHiddenInChild(form, "actioncodepromo", index);
switch(index)
{
case 0: // [...]
break;
case 1: // [...]
break;
case 2: // [...]
break;
case 3:
AddTextInChild(form, "Fichier de code (csv) : ");
var input = document.createElement("input");
input.type = 'file';
input.name = 'fichierdecode';
input.accept='text';
input.size = '20';
form.appendChild(input);
AddBRInChild(form);
AddSubmitInChild(form);
div.appendChild(form);
break;
case 4: // [...]
break;
case 5: // [...]
break;
}
} |
Voici le code PHP que j'utilise pour lire le fichier uploadé dans le formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
switch($_POST['actioncodepromo'])
{
case "1": //...
break;
case "2": //...
break;
case "3": if ($_FILES['fichierdecode']['error']){
switch ($_FILES['fichierdecode']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
array_push ($ERREUR, "Le fichier dépasse la limite autorisée.");
break;
case 2: // UPLOAD_ERR_FORM_SIZE
array_push ($ERREUR, "Le fichier dépasse la limite autorisée.");
break;
case 3: // UPLOAD_ERR_PARTIAL
array_push ($ERREUR, "L'envoi du fichier a été interrompu pendant le transfert.");
break;
case 4: // UPLOAD_ERR_NO_FILE
array_push ($ERREUR, "Le fichier que vous avez envoyé a une taille nulle.");
break;
}
}
else {
if ($handle = fopen($_FILES['fichierdecode']['tmp_name'], "r"))
{
$listeCode = array();
while (!feof($handle)) {
$line = fgets($handle, $_FILES['fichierdecode']['size']);
// [.. traitement de lecture ..]
}
}
else
{
array_push ($ERREUR, "Erreur lors de l'ouverture du fichier.");
}
}
break;
case "4": //...
break;
case "5": //...
break;
default : array_push ($ERREUR,"Erreur interne.");
break;
} |
J'obtiens toujours la derniere erreur resultante de l'echec du fopen
je patoge depuis ce matin .... votre aide sera la bienvenue !
Re: createElement input de type file : pb d'upload de fichie
[
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
function GetAndEmptyChild(nom)
{
var child = document.getElementById(nom);
if(child)
{
while( child.hasChildNodes() )
child.removeChild( child.childNodes[0] );
}
return child;
}
function AddTextInChild(child, texte)
{
var t = document.createTextNode("");
t.data = texte;
child.appendChild(t);
return t;
}
function AddInputTextInChild(child, nom, value, size, max)
{
var input = document.createElement("input");
input.type = 'text';
input.className = 'txt01';
input.name = nom;
input.defaultValue = value;
input.size = size;
input.maxLength = max;
child.appendChild(input);
return input;
}
function AddHiddenInChild(child, nom, value)
{
var hidden = document.createElement("input");
hidden.type = 'hidden';
hidden.name = nom;
hidden.value = value;
child.appendChild(hidden);
return hidden;
}
function AddSubmitInChild(child)
{
var submit = document.createElement("input");
submit.type = "submit";
submit.className = "submit01";
submit.value= "Valider";
child.appendChild(submit);
return submit;
}
function AddBRInChild(child)
{
var br = document.createElement("br");
child.appendChild(br);
}
function AddNBSPInChild(child, n)
{
for(var i=0; i<n; i++){
nbsp = document.createTextNode('\u00A0');
child.appendChild(nbsp);
}
}
function UpdateCode()
{
var index = document.formAddCode.actioncodepromo.selectedIndex;
var div = GetAndEmptyChild("idContents");
var form = document.createElement("form");
form.setAttribute("action", "index.php4?p=2");
form.setAttribute("method", "post");
AddHiddenInChild(form, "idtarif", <?php echo $idtarif; ?>);
AddHiddenInChild(form, "actioncodepromo", index);
switch(index)
{
case 0: // [...]
break;
case 1: // [...]
break;
case 2: // [...]
break;
case 3:
AddTextInChild(form, "Fichier de code (csv) : ");
var input = document.createElement("input");
var Hinput = document.createElement("input");
input.type = 'file';
Hinput.type='hidden'
input.name = 'fichierdecode';
Hinput.id = 'FC';
Hinput.name='Hfichiercode'
input.accept='text';
input.size = '20';
input.setAttribute('onchange',function(){document.getElementById('FC').value=this.value;})
form.appendChild(input);
form.appendChild(Hinput);
AddBRInChild(form);
AddSubmitInChild(form);
div.appendChild(form);
break;
case 4: // [...]
break;
case 5: // [...]
break;
}
} |
Voici le code PHP que j'utilise pour lire le fichier uploadé dans le formulaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
switch($_POST['actioncodepromo'])
{
case "1": //...
break;
case "2": //...
break;
case "3": if ($_FILES['Hfichierdecode']['error']){
switch ($_FILES['Hfichierdecode']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
array_push ($ERREUR, "Le fichier dépasse la limite autorisée.");
break;
case 2: // UPLOAD_ERR_FORM_SIZE
array_push ($ERREUR, "Le fichier dépasse la limite autorisée.");
break;
case 3: // UPLOAD_ERR_PARTIAL
array_push ($ERREUR, "L'envoi du fichier a été interrompu pendant le transfert.");
break;
case 4: // UPLOAD_ERR_NO_FILE
array_push ($ERREUR, "Le fichier que vous avez envoyé a une taille nulle.");
break;
}
}
else {
if ($handle = fopen($_FILES['Hfichierdecode']['tmp_name'], "r"))
{
$listeCode = array();
while (!feof($handle)) {
$line = fgets($handle, $_FILES['Hfichierdecode']['size']);
// [.. traitement de lecture ..]
}
}
else
{
array_push ($ERREUR, "Erreur lors de l'ouverture du fichier.");
}
}
break;
case "4": //...
break;
case "5": //...
break;
default : array_push ($ERREUR,"Erreur interne.");
break;
} |