Comment puis-je télécharger un formulaire HTML avec un nom d'utilisateur, un mot de passe, plusieurs envois de fichiers, puis le traiter avec PHP?
Question
Comment publier un nom d'utilisateur, un mot de passe et plusieurs fichiers binaires à partir d'un seul formulaire html et le traiter à l'aide de php? Je ne suis pas autorisé à utiliser ajax.
La solution
Tout d’abord, consultez ces pages sur PHP.net
Mais pour commencer, voici quelques fichiers de raccord.
uploadForm.html
<html>
<body>
<form action="processStuff.php" enctype="multipart/form-data" method="POST">
username: <input type="text" name="username" />
password: <input type="password" name="password" />
<p>
<input type="file" name="uploadFile[]" /><br />
<input type="file" name="uploadFile[]" /><br />
<input type="file" name="uploadFile[]" /><br />
<!-- Add as many of these as you want -->
</p>
<p>
<input type="submit" />
</p>
</form>
</body>
</html>
processStuff.php
<pre>
<?php
echo '<h2>Username & password</h2>'
echo "Username: {$_POST['username']}\nPassword: {$_POST['password']}";
echo '<hr />';
echo '<h2>Uploaded files</h2>'
foreach($_FILES['uploadFile']['tmp_name'] as $i => $tempUploadPath) {
if (empty($tempUploadPath)) {
// this <input type="file" /> was "blank"... no file selected
} else {
// a file was uploaded
echo '<strong>A file named "', $_FILES['uploadFile']['name'][$i], "\" was uploaded</strong>\n";
echo "\ttemporarily stored at: ", $tempUploadPath, "\n";
echo "\tmime type: ", $_FILES['uploadFile']['type'][$i], "\n";
echo "\tsize: ", $_FILES['uploadFile']['size'][$i], " bytes\n";
echo "\terror code",
((empty($_FILES['uploadFile']['size'][$i])
? '<em>no errror</em>'
: $_FILES['uploadFile']['size'][$i])),
"\n\n";
// do something useful with the uploaded file
// access it via $tempUploadPath and use move_uploaded_file() to move
// it out of the temp path before you manipulate it in any way!!!!!
// see http://us3.php.net/features.file-upload
// and http://us3.php.net/manual/en/function.move-uploaded-file.php
}
}
?>
</pre>
Le fichier HTML montre comment définir le enctype
de <form>
& amp; le second formulaire vous montre comment accéder au nom d'utilisateur soumis & amp; mot de passe & amp; enfin, comment parcourir tous les fichiers téléchargés.
Comme indiqué, vous DEVEZ déplacer le (s) fichier (s) dès que possible. Ils sont téléchargés vers un emplacement temporaire et le système les supprimera à moins que vous ne les utilisiez. Alors déplacez-les quelque part en premier puis faites ce dont vous avez besoin.
Hoep cela aide
Arin
Autres conseils
Vous devez utiliser les fonctions $_FILES
superglobal et move_uploaded_file()
pour voir quels fichiers ont été téléchargés avec succès et les déplacer vers leur emplacement final, le cas échéant.
Le $_POST
superglobal contiendra le nom d'utilisateur et le mot de passe soumis.