我遇到了从jquery脚本获取文件名的麻烦。
我有多个隐藏字段,其中包含来自我的表单中的fileinput的文件名,我使用它来获取文件名:
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脚本获取“value”中的内容,如下所示:
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();
}
}
答案 0 :(得分:1)
尝试:
foreach($filename["filename"] as $key=>$value){
$thisFilename=$filename["filename"][$key]["value"];
}
答案 1 :(得分:1)
您的文件位于$filename[0]['filename']
,因此您可以:
$filename
变量,该变量返回位于$filename[0]['filename']
的数组。像这样:
foreach( array_shift($filename) as $file ) {
$file['name']; // the file name (always filename[] so ignore it)
$file['value']; //the file value (the real filename)
}