上传与多个输入multpile文件
问题描述:
我的HTML代码(AJAX方法):上传与多个输入multpile文件
<?php
$i = 1;
while($i < 10){
?>
<div id="photoManagement<?php echo $i; ?>">
<div class="form-group">
<label for="contenu" class="col-lg-2 control-label">Choix de la photo <?php echo $i; ?></label>
<div class="col-lg-7">
<input id="photo<?php echo $i; ?>" type="file" name="image<?php echo $i; ?>" accept="image/*">
</div>
</div><br /><br />
<div class="form-group" style="margin-bottom: 0;">
<div id="image_preview<?php echo $i; ?>" class="col-lg-12">
<div class="thumbnail hidden">
<img src="http://placehold.it/5" alt="">
<div class="caption">
<h4></h4>
<p></p>
<p><button id="cancelImg<?php echo $i; ?>" type="button" class="btn btn-flat btn-danger">Annuler</button>
<button id="sendImg<?php echo $i; ?>" location.hred = "#portfolioImg1" class="pull-right btn btn-dark btn-theme-colored btn-flat mr-5">Ajouter</button></p>
</div>
</div>
</div>
</div>
</div>
<?php
$i++;
}
?>
标签是远远落后。这就是为什么它没有出现。
我的PHP(AJAX方法):
<?php
header("Access-Control-Allow-Origin: *");
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) //sécurité pour ne pas avoir d'accès direct sur le fichier
{
include('../MODEL/sqlConnexion.php');
//Partie traitement des photos
foreach($_FILES as $photo)
{
$key = key($_FILES);
if (isset($photo))
{
if ($photo['error'] == 0)
{
// Test pour voir si l'extension du fichier est bien autorisée
$file_path = pathinfo($photo['name']);
$file_extension = $file_path['extension'];
$allowed_extensions = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($file_extension, $allowed_extensions))
{
// Test pour voir si le fichier n'est pas trop gros
if ($photo['size'] <= 1048576)
{
$response['check'] = 'OK';
$path = '../images/chevaux/' . $_POST['horseName'] . '/' . $key . '.' . $file_extension;
$folder = '../images/chevaux/' . $_POST['horseName'];
if (!is_dir($folder))
{
mkdir($folder);
}
move_uploaded_file($photo['tmp_name'], $path);
}
else
{
$response[$nomImage] = "Le fichier " . $key . " est trop volumineux.";
}
}
else
{
$response[$nomImage] = "L'extension du fichier " . $key . " n'est pas prise en charge, les extensions prises en charge sont jpg, jpeg, gif, et png.";
}
}
elseif ($photo['error'] != 4)
{
$response[$nomImage] = "Le fichier " . $key . "est en erreur.";
}
}
}
if ((count($response) == 1) && ($response['check'] == 'OK'))
{
$response['check'] = 'OK';
}
else
{
$response['check'] = 'NOTOK';
}
echo json_encode($response);
}
该文件夹是在服务器上创建的,但只有前输入的第一个文件中上传这就是为什么我没有把所有的JavaScript。代码是完美的。代码中唯一的问题是“move_uploaded_file”。
你有什么想法吗?
答
我找到了我的解决方案。事实上,变量$ key总是一样的。所以图片总是被循环删除。
我不得不写:
foreach($_FILES as $key=>$photo)
要让$键值。我用相同的用法保留$照片。现在一切正常。
希望它可以帮助。
您对文件夹有读写权限 – Toxide82
是的,第一个文件正确地上传atm。问题是下一个文件.. – Kuartz
是否说该文件夹第二次存在? – Toxide82