0

我正在使用 html5 js上传多张图片。为什么当我们上传多张图片时,结果 (PHP: print_r($_FILES['upimg']['name'])) 只显示最后选择的图片的详细信息?

例如:(我选择了以下图片名称)

111111.gif

222222.gif

333333.gif

PHP 代码仅显示最后选择的图像:333333.gif

但我想显示所有图像的细节。

我该怎么办?

演示:http ://codepad.viper-7.com/16abeG

完整代码:

<!doctype html>
<html>
<head>
    <?php
if($_FILES){
    echo '<pre>';
    print_r($_FILES['upimg']['name']);
    
        //for($i=0; $i<count($_FILES['name']); $i++){
            //if ($_FILES['error'][$i] == 0) {
                ////do your stuff here, each image is at $_FILES['tmp_name'][$i]
            //}
        //}
    }
?>
  <title>file input click() demo</title>
  <script type="text/javascript">
    function doClick() {
      var el = document.getElementById("fileElem");
      if (el) {
        el.click();
      }
    }
    function handleFiles(files) {
      var d = document.getElementById("fileList");
      if (!files.length) {
        d.innerHTML = "<p>No files selected!</p>";
      } else {
        var list = document.createElement("ul");
        d.appendChild(list);
        for (var i=0; i < files.length; i++) {
          var li = document.createElement("li");
          list.appendChild(li);
          
          var img = document.createElement("img");
          img.src = window.URL.createObjectURL(files[i]);;
          img.height = 60;
          img.onload = function() {
            window.URL.revokeObjectURL(this.src);
          }
          li.appendChild(img);
          
          var info = document.createElement("span");
          info.innerHTML = files[i].name + ": " + files[i].size + " bytes";
          li.appendChild(info);
        }
      }
    }
  </script>
</head>
<body>
  <p>This is a demo of calling <code>click()</code> on a form's file picker.
  Note that the file input element is actually hidden here, so the
  user doesn't have to see the path to the selected file.</p>
      <a href="javascript:doClick()">Select some files</a>
  <div id="fileList">
    <p>No files selected!</p>
  </div>
  <form action="#" method="post" enctype="multipart/form-data">
    <input name="upimg[]" type="file" id="fileElem" multiple accept="image/*" style="display:none" onchange="handleFiles(this.files)">
        <input type="submit" value="Click to see the result">
  </form>
</body>
</html>
4

3 回答 3

0

尝试将它包装在一个 for 循环中,有点像您注释掉的代码......

if(isset($_FILES["upimg"]["name"])) {
    for($i=0; $i<count($_FILES["upimg"]["name"]);$i++) {
        echo $_FILES["upimg"]["name"][$i];
    }
}
于 2013-07-12T20:02:58.687 回答
0

我认为你的逻辑是错误的,你使用 HTML 5,但不通过 AJAX 上传图片,你使用表单来实现这种方法。

Miltiple 只是 HTML 5,没有 AJAX 就不能用于 PHP。

我创建了类似的插件,您可以查看:https ://github.com/dimitardanailov/js-control-files-uploader

于 2013-07-12T19:58:30.560 回答
0

为什么不在
任何 .parent div 之前使用标签?

对于宽度比,您当然可以使用 jquery 来完成。

myElement.width = (parentElement.width/100)*40
于 2013-07-13T04:29:22.267 回答