1

我在从 jquery 脚本获取文件名时遇到了一些麻烦。

我的表单中有多个隐藏字段,其中包含来自文件输入的文件名,我使用它来获取文件名:

var fn = $('input[name="filename[]"]').serializeArray();
var post_var = {'filename':fn};

接着:

return JSON.stringify({
  "filename": post_var
});

这给了我这样的东西:

[Object { name="filename[]", value="703640495-qr-flo.png"}, Object { name="filename[]", value="703640495-qr-pgl.png"}]

但我不确定如何使用我当前的 php 脚本获取“值”中的内容,如下所示:

 foreach($filename as $key => $value) {
    $imgrow = $this->db->dbh->prepare('INSERT INTO '. $this->config->db_prefix .'_images (aid, image) VALUES (:aid, :image)');
    $imgrow->bindValue(':aid', $id);
    $imgrow->bindParam(':image', strtolower($value));
    $imgrow->execute();

}

如果我 var_dump($filename) 我得到这个:

array(1) {
  [0]=>
  object(stdClass)#104 (1) {
    ["filename"]=>
    array(2) {
      [0]=>
      object(stdClass)#105 (2) {
        ["name"]=>
        string(10) "filename[]"
        ["value"]=>
        string(20) "703640495-qr-flo.png"
      }
      [1]=>
      object(stdClass)#106 (2) {
        ["name"]=>
        string(10) "filename[]"
        ["value"]=>
        string(20) "703640495-qr-pgl.png"
      }
    }
  }
}  

解决方案:

foreach(array_shift($filename) as $file ) {
   foreach ($file as $key => $value) {
      $imgrow = $this->db->dbh->prepare('INSERT INTO '. $this->config->db_prefix .'_images (aid, image) VALUES (:aid, :image)');
         $imgrow->bindValue(':aid', $id);
         $imgrow->bindParam(':image', strtolower($value->value));
         $imgrow->execute();
   }
}  
4

2 回答 2

1

尝试:

foreach($filename["filename"] as $key=>$value){

    $thisFilename=$filename["filename"][$key]["value"];

}
于 2013-06-13T11:46:40.627 回答
1

您的文件位于,$filename[0]['filename']因此您可以:

  1. 数组移位$filename返回位于 的数组的变量$filename[0]['filename']
  2. 然后遍历返回的数组,其中每次循环迭代都会为您提供一个包含名称 abnd 值键的数组。

像这样:

foreach( array_shift($filename) as $file ) {

   $file['name']; // the file name (always filename[] so ignore it)
   $file['value']; //the file value (the real filename)

}
于 2013-06-13T11:50:21.047 回答