首先,我通过多个选择(HTML5)上传输入文件经过for
循环的多个图像,但是当尝试输出JSON中的链接时,它只输出一个图像文件名即使我选择了2张以上的图片。
这就是我创建JSON(重要部分,而不是完整脚本)的方式:
$count = 0;
$image_count = count($_FILES['file']);
for($i = 0; $i < $image_count; $i++)
{
$filename = random(13) . fileExt($_FILES['file']['name'][$i]);
move_uploaded_file($_FILES['file']['tmp_name'][$i], 'images/' . $filename);
$output = array();
$output['url'] = 'http://www.mywebsite.com/images/' . $filename;
$output['name'] = $filename;
$count++;
}
if($count == $image_count)
{
echo json_encode($output);
}
最终输出如下:
{
"url": "http://www.mywebsite.com/images/0Z9O3a9q1k2A8.jpg",
"name": "0Z9O3a9q1k2A8.jpg"
}
当它应该有多个图像列出如下:
{
"url": "http:\/\/www.mywebsite.com\/images\/0Z9O3a9q1k2A8.jpg",
"name": "0Z9O3a9q1k2A8.jpg"
},
{
"url": "http:\/\/www.mywebsite.com\/images\/3jn5jk5n4kj5n.jpg",
"name": "3jn5jk5n4kj5n.jpg"
},
{
"url": "http:\/\/www.mywebsite.com\/images\/nj23knk5k5455.jpg",
"name": "nj23knk5k5455.jpg"
}
如果我这样做:
array_push($output, 'http://www.mywebsite.com/images/' . $filename);
array_push($output, $filename);
我得到这样的输出:
{
"0": "http:\/\/www.mywebsite.com\/images\/0Z9O3a9q1k2A8.jpg",
"1": "0Z9O3a9q1k2A8.jpg",
"2": "http:\/\/www.mywebsite.com\/images\/3jn5jk5n4kj5n.jpg",
"3": "3jn5jk5n4kj5n.jpg",
"4": "http:\/\/www.mywebsite.com\/images\/nj23knk5k5455.jpg",
"5": "nj23knk5k5455.jpg",
}
我需要它与我需要的类似,所以我可以用jQuery解析它。
答案 0 :(得分:1)
试试这个:
$output = array();
for($i = 0; $i < $image_count; $i++)
{
$filename = random(13) . fileExt($_FILES['file']['name'][$i]);
move_uploaded_file($_FILES['file']['tmp_name'][$i], 'images/' . $filename);
$output[] = array(
'url' => 'http://www.mywebsite.com/images/' . $filename,
'name' => $filename
);
$count++;
}
使用$output[] = x
,您可以向数组添加条目。输出如下:
[
{
"url": "http:\/\/www.mywebsite.com\/images\/0Z9O3a9q1k2A8.jpg",
"name": "0Z9O3a9q1k2A8.jpg"
},
{
"url": "http:\/\/www.mywebsite.com\/images\/3jn5jk5n4kj5n.jpg",
"name": "3jn5jk5n4kj5n.jpg"
}
]
答案 1 :(得分:1)
您需要拥有一个正在使用的阵列。所以不要这样:
$output = array();
$output['url'] = 'http://www.mywebsite.com/images/' . $filename;
$output['name'] = $filename;
你会想要这样的东西:
$output = array();
$output[]['url'] = 'http://www.mywebsite.com/images/' . $filename;
$output[]['name'] = $filename;
这将为您提供输出,然后您可以在jquery中将其引用为:
success: function(response){
response[0].name;
response[0].url;
}
这有意义吗? jquery代码非常简略。