PHP多图片上传问题,不管我选择几个图片进行上传,但是,只能传上去最后添加的一张

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP多图片上传问题,不管我选择几个图片进行上传,但是,只能传上去最后添加的一张相关的知识,希望对你有一定的参考价值。

代码如下:
$count=0;
$imgUrlArray = array();

foreach($_FILES["imgfile"]["error"] as $key=>$error)

if($error==UPLOAD_ERR_OK)
$file_name=$_FILES["imgfile"]["name"][$key];

$tmp_name=$_FILES["imgfile"]["tmp_name"][$key];

$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
//array_shift删除前端第一个
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);

$name =$uploaddir.date("YmdHis"). '.'.$file_ext;

$uploadfile=$uploaddir.basename($name);

if(move_uploaded_file($tmp_name,$uploadfile))$count++;


for($i=0;$i<$count;$i++)
$imgUrlArray[] = '/'.$uploaddir.basename($news_file_name);

if(!empty($imgUrlArray))
$postArray['imgurl'] = implode(',',$imgUrlArray);


比如我选择4个上传,那么,输出后发现只有最后一个上传上去了,前面三个都没有传上去! 这样应该怎么处理啊?

下面是上传页面的代码
<script type="text/javascript">
function addimg()
//包含所有文件域的DIV
var div = document.getElementById('imgs');
//文件域
var input = document.createElement("input");
input.name = "imgfile[]";
input.type = 'file';
//添加
div.appendChild(input);
//删除按钮
var button = document.createElement("a");
button.href = "javascript:;";
button.innerHTML = '删除';
div.appendChild(button);
//换行
var br = document.createElement("br");
div.appendChild(br);
//在按钮上增加删除的事件
button.onclick = function()
input.parentNode.removeChild(input);
this.parentNode.removeChild(this);
br.parentNode.removeChild(br);


</script>

<form name="myform" action="up.php" method="post" enctype="multipart/form-data">
<input name="id" type="hidden" value="<?php echo $ps["id"];?>" />
上传图片:<div id="imgs">
<input type="file" name="imgfile[]" id="imgfile[]"/><input type="button" onclick="addimg()" value="增加"/><br>
</div>
<br><br>
<?php if($postArray['id']!=''&&$ps['imgurl']!='')?>
<div class="image">
<?php
if($imgCount!=0)
for($i=0;$i<$imgCount;$i++)
?>
<div class="imgs">
<div class="goDel">
<a href="?act=del_one&id=<?php echo $ps['id'];?>&img=<?php echo $imgUrlArray[$i];?>&imgid=<?php echo $i;?>" onclick="javascript:return confirm('提示:您确定要继续执行该操作吗?')" class="del"></a>
</div>
<a href="<?php echo $imgUrlArray[$i];?>" rel="example_group"><img src="<?php echo $imgUrlArray[$i];?>" /></a>
</div>
<?php ?>
</div><br><br><br><br>
<?php ?>
<input type="submit" id="button" value="提交">
<input type="reset" value="取消设置" />
</form>
能否在我的代码的基础上修改呢?

参考技术A <?php
$db="editor";
$user="admin";
$pas="admin";
$conn=mysql_connect("localhost",$user,$pas) or die("连接错误");
mysql_select_db($db,$conn);
mysql_query("set names 'GB2312'");
$nba=$_FILES["bai"]["name"];
$tmpname=$_FILES["bai"]["tmp_name"];
$size=$_FILES["bai"]["size"];
$type=$_FILES["bai"]["type"];
$error=$_FILES["bai"]["error"];

if (file_exists("../upload/".$nba ))
echo "文件已存在";
else
foreach ($error as $key=>$val)
if($val==0)
move_uploaded_file($tmpname[$key],"../upload/" .rand().$nba[$key]);
$imgpath="../upload/" .rand().$nba[$key];
echo $imgpath;
$sql1 = "INSERT INTO news (title, content,imgpath) VALUES ('a','b','$imgpath')";
echo $nba[$key]."--------".$tmpname[$key]."----------".$size[$key]."--------------".$type[$key];
echo "<br>";

else
echo "wrong!";



?>

<html>
<body>
<form name="bai" id="bai" method="POST" action="wjsc1.php" enctype="multipart/form-data" >
上传文件<input type="file" name="bai[]" id="bai" />
<br>
<input type="file" name="bai[]" id="bai" />
<br>
<input type="file" name="bai[]" id="bai" />
<br>
<span style="magrin:0px;padding:0px"><input type="image" name="img"/ src="images/submit.gif"></span>
</form>
</body>
</html>

自己对比哇,管家要把数组处理好本回答被提问者和网友采纳
参考技术B 你的foreach只循环了一遍. 参考技术C 写的好乱啊,建议去找一个Jquery多图上传的控件来,很轻松几行代码就搞定。

图片上传太慢php

【中文标题】图片上传太慢php【英文标题】:image uploading too slow php 【发布时间】:2011-10-13 04:46:40 【问题描述】:

我正在使用 ajax 使用 php 进行多张图片上传。我正在提交带有针对隐藏 iframe 的文件输入的图像上传表单。 之后,我执行“move_uploaded_file()”,然后将上传的文件压缩到较小的大小。 然后我在 iframe 中显示 uloaded 文件名并在 jquery 中检索它们以检查是否所有都已上传。 在所有这些过程之后,我正在执行数据库操作并构建一些 html 内容并显示它们。在我的机器上运行时,这确实需要大量时间。我觉得它在直播时肯定会花费太多时间。 如果我在这个过程中错了,请建议我一些方法来缩短这个漫长的时间并纠正我。我知道压缩需要很多时间。但我必须压缩它,我别无选择。

【问题讨论】:

您正在执行什么样的数据库操作?压缩可能很慢,但这里的问题也可能是数据库连接缓慢。 我正在使用 mysql 数据库。但我通过删除压缩功能来检查它。速度不错。只有当我包含压缩功能时它才会变慢 您正在处理什么文件类型(图像格式)?或者更好的是,压缩是什么意思?您实际上是压缩图像,还是重新计算图像尺寸? @asha 我的第二个问题? @yoshi 我计算新的宽度和高度,然后使用 'imagecopyresampled()' 和 'imagejpeg()' 函数重新创建图像。我也检查了新的图像尺寸。它被减少到几个 kbs。 【参考方案1】:

另外,如果你想要多个异步 ajax 请求,你应该看看http://konrness.com/php5/how-to-prevent-blocking-php-requests/ 这个想法是在使用 session_start() 时要小心;

【讨论】:

以上是关于PHP多图片上传问题,不管我选择几个图片进行上传,但是,只能传上去最后添加的一张的主要内容,如果未能解决你的问题,请参考以下文章

在php中使用jquery uploadify进行多图片上传

OT多图片上传

php过滤上传类型,只上传图片类型文件

thinkphp如何将多张上传的图片根据状态分别存储!

关于thinkphp图片上传问题

如何使用php实现图片批量上传功能