我试图通过一次点击将多个图像上传到服务器。我没有在JavaScript控制台上收到任何错误,但没有图像上传到服务器。你能告诉我我做错了吗?
这是我的HTML标记
<form id="uploadimage" action="" method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-xs-6 col-md-3 text-center">
<a href="#" class="thumbnail ">
<div class="img-box">
<input type="file" class="file" name="image" /> <img class="img img-responsive" />
</div>
</a>
</div>
<div class="col-xs-6 col-md-3 text-center">
<a href="#" class="thumbnail ">
<div class="img-box">
<input type="file" class="file" name="image" />
<img class="img img-responsive" />
</div>
</a>
</div>
</div>
<input type="submit" value="Upload" class="submit" />
</form>
js文件为:
$("#uploadimage").on('submit', (function(e) {
e.preventDefault();
$.ajax({
url: "loader.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData: false,
success: function(data) {
}
});
}));
和PHP(loader.php)为
<?php
if (isset($_FILES["file"]["type"])) {
$validextensions = array(
"jpeg",
"jpg",
"png"
);
$temporary = explode(".", $_FILES["file"]["name"]);
$file_extension = end($temporary);
if ((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg")) && ($_FILES["file"]["size"] < 100000) //Approx. 100kb files can be uploaded.
&& in_array($file_extension, $validextensions)) {
if ($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br/><br/>";
} else {
if (file_exists("upload/" . $_FILES["file"]["name"])) {
echo $_FILES["file"]["name"] . " <span id='invalid'><b>already exists.</b></span> ";
} else {
$sourcePath = $_FILES['file']['tmp_name']; // Storing source path of the file in a variable
$targetPath = "upload/" . $_FILES['file']['name']; // Target path where file is to be stored
move_uploaded_file($sourcePath, $targetPath); // Moving Uploaded file
echo "<span id='success'>Image Uploaded Successfully...!!</span><br/>";
}
}
} else {
echo "<span id='invalid'>***Invalid file Size or Type***<span>";
}
}
?>\
答案 0 :(得分:1)
请参阅this 当你发送多个文件时,php接受它作为一个文件数组,但在你的代码中,你接受它们作为一个单独的文件。 另外,尝试将名称数组作为
<input type="file" name="images[]" id="images" multiple >
答案 1 :(得分:0)
$_FILES["image"]
来访问您的文件。[]
名称(至少在php中)。因此,请在html源代码中重命名image[]
。 答案 2 :(得分:0)
首先,您在控制器中接收的文件数组是错误的,
$temporary = explode(".", $_FILES["file"]["name"]);
你需要拍摄图像而不是文件,因为你使用的表格文件输入名称是图像,
$temporary = explode(".", $_FILES["image"]["name"]);
然后在你的HTML中,你可以像 thisisme_22 建议一样
<input type="file" name="images[]" id="images" multiple >
然后在你的动作php文件中你可以统计文件和使用for或foreach你可以获得单个文件并上传它,就像这样
$count = count($FILES['image']['name']);
for($i = 0 ; $i < $count ; $i++){
$file = $FILES['image']['name'][$i];
}
我希望它有所帮助。
答案 3 :(得分:0)
检查此代码并根据需要进行更改
$arr = array();
$arr = $_FILES['image']['name'];
for($i = 0; $i < count($arr) ; $i++)
{
$file_name = $_FILES['image']['name'][$i];
$file_size = $_FILES['image']['size'][$i];
$file_tmp = $_FILES['image']['tmp_name'][$i];
$file_type = $_FILES['image']['type'][$i];
$responce = move_uploaded_file($file_tmp, "orders/".$file_name);
}