这是我上传图片的代码。它工作但只有一个图像。我想更改它,以便我的用户上传最多4张图片。有人可以指导我吗?
if(isset($_FILES['image'])){
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png","gif","");
if(in_array($file_ext,$extensions) === false){
$msg = '<div class="error">Extension not allowed, please choose a JPEG or PNG file.</div>';
}
if($file_size > 10000000){
$msg = '<div class="error">File size must not be larger than 10MB</div>';
}
if(empty($msg)==true){
$newname= (rand(1, 99999999999).".".$file_ext);
$dir_separator = DIRECTORY_SEPARATOR;
$folder = "uploads";
$uploaddate = date("M-d-Y");
$destination_path = dirname(__FILE__).$dir_separator.$folder.$dir_separator.$uploaddate.$dir_separator;
if(!is_dir($destination_path)) mkdir($destination_path);
$target_path = $destination_path.$newname;
move_uploaded_file($file_tmp, $target_path);
if(empty($file_name) == false){
$file_location = "/".$uploaddate."/".$newname;
}
else
{
$file_location = "";
}
//SQL Insert code here
echo "Upload complete";
}
}
这是我的表格
<form id="support-form" action="" name="support-form" method="POST" enctype="multipart/form-data">
<div class="subject-message-wrap"> <br/>
<div class="message-text" style="text-align:center;">
<textarea name="message" id="message" rows="5" style="width:98%; max-width: 98%;" placeholder="Write your reply here..." required></textarea>
</div>
</div>
<!---UPLOAD FILE--->
<div class="wrap-upload">
<div>
<label style="color:#009fdb;"> Attach an image: </label>
<input type="file" name="image" id="image" multiple/>
</div>
<br/>
<div class="submit-button-wrap">
<input type="submit" value="Reply" name="submit" id="submit"> <input type="submit" value="Cancel" name="cancel" id="cancel">
</div>
</div>
<!---Code End UPLOAD FILE--->
</form>
编辑#1: 我的数据库表上的问题。我的表看起来像这样。
我在想的是为附加图像位置(网址)添加新的3个字段。还有比我好的其他好主意吗?
答案 0 :(得分:0)
以下是如何做到这一点:
注意:如果您要上传多张照片,则需要输入多个file
:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="images[]" id="image" >
<input type="file" name="images[]" id="image" >
<input type="file" name="images[]" id="image" >
<input type="file" name="images[]" id="image" >
<input type="submit" value="Send files" >
</form>
然后您可以像提交按钮一样获取所有图像:
$images = $_POST['images'];
for($i=0;$i<count($images);$i++)
{
// Here you need to repeat your upload whole PHP Code for each photo
// to upload all of them
}
参考网址
你问题的另一部分:
解决方案:您无需多个字段即可将这些值保存在其中。您只需将图像名称保存在一个字段中即可:
<?php
$images = array();
$images[0]['images'] = "image1,image2,image3,image4";
$images[1]['images'] = "image1,image2,image3,image4";
$images[2]['images'] = "image1,image2,image3,image4";
//After fetching your data from your database
//You can simply explode the image column data in order to separate each image value
for($i=0;$i<count($images);$i++) {
$image = explode(",",$images[$i]['images']);
echo "Image 1 :".$image[0]."</br>";
echo "Image 2 :".$image[1]."</br>";
echo "Image 3 :".$image[2]."</br>";
echo "Image 4 :".$image[3]."</br></br></br></br></br>";
}
?>
代码输出:
Image 1 :image1
Image 2 :image2
Image 3 :image3
Image 4 :image4
Image 1 :image1
Image 2 :image2
Image 3 :image3
Image 4 :image4
Image 1 :image1
Image 2 :image2
Image 3 :image3
Image 4 :image4
答案 1 :(得分:0)
更改输入名称:
<input type="file" name="image[]" id="image" multiple />
更改PHP代码以处理多个文件上传。很好的例子:
http://php.net/manual/en/features.file-upload.multiple.php
限制客户端(JavaScript)和服务器(PHP)上的图像数量。
答案 2 :(得分:0)
试试这个
if(isset($_FILES['image'])){
$num_files = count($_FILES['image']['tmp_name']); // file count
for($i=0; $i < $num_files;$i++)
{
if($i<4)
{
//here checking only four file
$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];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'][$i])));
$extensions= array("jpeg","jpg","png","gif","");
if(in_array($file_ext,$extensions) === false){
$msg = '<div class="error">Extension not allowed, please choose a JPEG or PNG file.</div>';
}
if($file_size > 10000000){
$msg = '<div class="error">File size must not be larger than 10MB</div>';
}
if(empty($msg)==true){
$newname= (rand(1, 99999999999).".".$file_ext);
$dir_separator = DIRECTORY_SEPARATOR;
$folder = "uploads";
$uploaddate = date("M-d-Y");
$destination_path = dirname(__FILE__).$dir_separator.$folder.$dir_separator.$uploaddate.$dir_separator;
if(!is_dir($destination_path)) mkdir($destination_path);
$target_path = $destination_path.$newname;
move_uploaded_file($file_tmp, $target_path);
if(empty($file_name) == false){
$file_location = "/".$uploaddate."/".$newname;
}
else
{
$file_location = "";
}
//SQL Insert code here
echo "Upload complete";
}
}
}
}