我需要上传几张图片,我有2个问题,第一个不允许我上传2个或更多文件的时候来自手机(这里有重要的事情,如果是来自手机,你必须打开相机,如果是在PC,它必须显示文件选择的窗口,这工作正常,但手机只剩下一个,到目前为止我只在Android上使用Crhome尝试过它,第二个细节是第一个元素没有保存,如果它只是一个文件,因为它也没有,它似乎不采取位置[0],当我放置多个图像时,第一个不保存而其他图像保存正确。我已经尝试了一段时间,我没有看到问题。附件我的文件结构:
\相机
└───uploads
└───index.php
└───upload.php
index.php:
<html>
<head>
<meta charset="UTF-8">
<title>upload</title>
</head>
<body>
<form action="upload.php" method="post" multipart="" enctype="multipart/form-data">
<input type="file" name="img[]" accept="image/*" id="capture" capture="camera" multiple >
<input type="submit">
</form>
</body>
</html>
并上传.php:
<?php
echo '<pre>';
$img = $_FILES['img'];
if(!empty($img))
{
$img_desc = reArrayFiles($img);
print_r($img_desc);
foreach($img_desc as $val)
{
$newname = date('YmdHis',time()).mt_rand().'.jpg';
move_uploaded_file($val['tmp_name'],'./uploads/'.$newname);
}
}
function reArrayFiles($file)
{
$file_ary = array();
$file_count = count($file['name']);
$file_key = array_keys($file);
for($i=0;$i<$file_count;$i++)
{
foreach($file_key as $val)
{
$file_ary[$i][$val] = $file[$val][$i];
}
}
return $file_ary;
}
?>
答案 0 :(得分:0)
这对我有用,跳这将解决你的第二个问题。
if (isset($_FILES['Gallery']) && is_array($_FILES['Gallery'])) {
$errors= array();
foreach($_FILES['Gallery']['tmp_name'] as $key => $tmp_name ) {
$file_name = $key.$_FILES['Gallery']['name'][$key];
$file_size =$_FILES['Gallery']['size'][$key];
$file_tmp =$_FILES['Gallery']['tmp_name'][$key];
$file_type=$_FILES['Gallery']['type'][$key];
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
if (empty($errors)==true) {
if (is_dir('uploads')==false) {
mkdir('uploads', 0700); // Create directory if it does not exist
}
if (file_exists("uploads/".$file_name)==false) {
move_uploaded_file($file_tmp,"uploads/".$file_name);
chmod("uploads/".$filename, 0777);
$Gallery_Link = "uploads/".$file_name;
} else { // rename the file if another one exist
$Gallery_Link = "uploads/".time()."_".$file_name;
rename($file_tmp,$Gallery_Link) ;
}
} else {
echo $errors;
}
}
}