2017-01-30 46 views
-1

检查图像后我有3个输入:如何通过ID在PHP

应用程序名称

2.背景照片

标志相片

我从@mith那里获得帮助。代码很棒。图像总是进入正确的文件夹。将代码提交到文件夹后,我调整代码以更改图像的名称。但我不知道这种情况有什么问题

$fieldname = ($key == 'image[]') ? 'image' : 'logo'; 
$filename = $applicationName . '_' . $fieldname . '.' . 
      pathinfo($upload["tmp_name"], PATHINFO_EXTENSION); 

$filename永远是标志。我不知道为什么这种情况总是假的。 因此,2张图片总是被命名为applicationName_logo。请帮我弄清楚。

HTML表单:

<form action="yong.php" method="POST" enctype="multipart/form-data"> 
 
    <h3>App name</h3> 
 
    <input type="text" id="applicationName" name="applicationName"> 
 
    <h3>Background image</h3> 
 
    <input type="file" id="image" name="image[]" multiple="multiple" accept="image/*" /> 
 
    <h3>Logo image</h3> 
 
    <input type="file" id="logo" name="logo[]" multiple="multiple" accept="image/*" /> 
 
    <br> 
 
    <br> 
 
    <input type="submit"> 
 
</form>

PHP代码:

<?php 
$valid_formats = array("jpg", "png", "gif", "zip", "bmp"); 
$max_file_size = 5000*100; //100 kb 
$path = "home_dir/"; // Upload directory 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
// Loop $_FILES to exeicute all files 

$applicationName = $_POST['applicationName']; 
$sql_field_list = ['applicationName']; 
$sql_value_list = [$applicationName]; 

foreach ($_FILES['image']['name'] as $f => $name) { 
    if ($_FILES['image']['error'][$f] == 4) { 
     continue; // Skip file if any error found 
     echo "Skip file if any error found"; 
    } 
    if ($_FILES['image']['error'][$f] == 0) { 
     if ($_FILES['image']['size'][$f] > $max_file_size) { 
      $message[] = "$name is too large!."; 
      echo "$name is too large!."; 
      continue; // Skip large files 
     } 
     elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
      $message[] = "$name is not a valid format"; 
      echo "$name is not a valid format"; 
      continue; // Skip invalid file formats 
     } 
     else{ // No error found! Move uploaded files 
      $tmp_name = $upload["tmp_name"]; 
      $parts  = explode('/', $upload['tmp_name']); 
      $tmpName = array_pop($parts); 
      $fieldname = ($key == 'image[]') ? 'image' : 'logo'; 
      $filename = $applicationName . '_' . $fieldname . '.' . pathinfo($upload["tmp_name"], PATHINFO_EXTENSION); 
     } 

      //if(move_uploaded_file($_FILES["image"]["tmp_name"][$f], $path.$filename.png)) 
      if(move_uploaded_file($_FILES["image"]["tmp_name"][$f], $path.'applicationName_bg/'.$filename.png)) 
       $count++; // Number of successfully uploaded file 
      $message[] = "$name is uploaded"; 
      echo "$filename is uploaded"; 

    } 
} 

foreach ($_FILES['logo']['name'] as $f => $name) { 
    if ($_FILES['logo']['error'][$f] == 4) { 
     continue; // Skip file if any error found 
     echo "Skip file if any error found"; 
    } 
    if ($_FILES['logo']['error'][$f] == 0) { 
     if ($_FILES['logo']['size'][$f] > $max_file_size) { 
      $message[] = "$name is too large!."; 
      echo "$name is too large!."; 
      continue; // Skip large files 
     } 
     elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
      $message[] = "$name is not a valid format"; 
      echo "$name is not a valid format"; 
      continue; // Skip invalid file formats 
     } 
     else{ // No error found! Move uploaded files 
      $tmp_name = $upload["tmp_name"]; 
      $parts  = explode('/', $upload['tmp_name']); 
      $tmpName = array_pop($parts); 
      $fieldname = ($key == 'image[]') ? 'image' : 'logo'; 
      $filename = $applicationName . '_' . $fieldname . '.' . pathinfo($upload["tmp_name"], PATHINFO_EXTENSION); 
     } 

      //if(move_uploaded_file($_FILES["logo"]["tmp_name"][$f], $path.$filename.png)) 
      if(move_uploaded_file($_FILES["logo"]["tmp_name"][$f], $path.'applicationName_logo/'.$filename.png)) 
       $count++; // Number of successfully uploaded file 
      $message[] = "$name is uploaded"; 
      echo "$filename is uploaded"; 

    } 
} 
} 
+0

使用'文件[ '形象'] []'和'文件[ '标志'] []',并自动将有所区别。你可以在你的php代码中打印'$ _FILES'来检查它。它会给你多维数组,这是'image'和'logo' –

+0

PHP不识别'id'它知道'name'两个主要按键。 –

+0

使用键区分输入字段。 PHP无法默认读取HTML ID属性。区分输入文件的最好方法是用键分离它们。 e.g

回答

1

试试下面的代码单独保存的标志和图像文件:

HTML:

<form action="yong.php" method="POST" enctype="multipart/form-data"> 
    <h3>App name</h3> 
    <input type="text" id="applicationName" name="applicationName"> 
    <h3>Background image</h3> 
    <input type="file" id="image" name="image[]" multiple="multiple" accept="image/*" /> 
    <h3>Logo image</h3> 
    <input type="file" id="logo" name="logo[]" multiple="multiple" accept="image/*" /> 
    <br> 
    <br> 
    <input type="submit"> 
</form> 

PHP

<?php 
$valid_formats = array("jpg", "png", "gif", "zip", "bmp"); 
$max_file_size = 5000*100; //100 kb 
$path = "home_dir/"; // Upload directory 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
// Loop $_FILES to exeicute all files 
foreach ($_FILES['image']['name'] as $f => $name) { 
    if ($_FILES['image']['error'][$f] == 4) { 
     continue; // Skip file if any error found 
     echo "Skip file if any error found"; 
    } 
    if ($_FILES['image']['error'][$f] == 0) { 
     if ($_FILES['image']['size'][$f] > $max_file_size) { 
      $message[] = "$name is too large!."; 
      echo "$name is too large!."; 
      continue; // Skip large files 
     } 
     elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
      $message[] = "$name is not a valid format"; 
      echo "$name is not a valid format"; 
      continue; // Skip invalid file formats 
     } 
     else{ // No error found! Move uploaded files 
      if(move_uploaded_file($_FILES["image"]["tmp_name"][$f], $path.'applicationName_bg/'.$name)) 
       $count++; // Number of successfully uploaded file 
      $message[] = "$name is uploaded"; 
      echo "$name is uploaded"; 
     } 
    } 
} 

foreach ($_FILES['logo']['name'] as $f => $name) { 
    if ($_FILES['logo']['error'][$f] == 4) { 
     continue; // Skip file if any error found 
     echo "Skip file if any error found"; 
    } 
    if ($_FILES['logo']['error'][$f] == 0) { 
     if ($_FILES['logo']['size'][$f] > $max_file_size) { 
      $message[] = "$name is too large!."; 
      echo "$name is too large!."; 
      continue; // Skip large files 
     } 
     elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
      $message[] = "$name is not a valid format"; 
      echo "$name is not a valid format"; 
      continue; // Skip invalid file formats 
     } 
     else{ // No error found! Move uploaded files 
      if(move_uploaded_file($_FILES["logo"]["tmp_name"][$f], $path.'applicationName_logo/'.$name)) 
       $count++; // Number of successfully uploaded file 
      $message[] = "$name is uploaded"; 
      echo "$name is uploaded"; 
     } 
    } 
} 
} 
+1

创建文件夹applicationName_logo和applicationName_bg内部HOME_DIR并尝试以上回答。我在我的代码中更改了上传路径。 @Splicee – mith

+0

我有一些问题。 但我不能在评论框中问你,因为它太长了。请重新读取 @mith – Splicee