下面这段php代码如何实现多图上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下面这段php代码如何实现多图上传相关的知识,希望对你有一定的参考价值。

我的程序现在INPUT图片上传是可以用的,两个INPUT同时上传也是可以的,我要实现的是在一个INPUT同时上传多张图片。遇到的问题是这样的
上传组件上传数据的格式是
Array

(

[name] => 222.png

[type] => image/png

[tmp_name] => C:\Windows\Temp\php2D75.tmp

[error] => 0

[size] => 21132

)
当我将INPUT格式改成这样
<input type="file" name="field_$row['refid'][]" multiple />
上传数据时,得到的数据是下面这样,数据无法上传
Array
(
[name] => Array
(
[0] => alexa.png
[1] => baidu.png
[2] => bbs.png
)

[type] => Array
(
[0] => image/png
[1] => image/png
[2] => image/png
)

[tmp_name] => Array
(
[0] => C:\Windows\Temp\phpC6A9.tmp
[1] => C:\Windows\Temp\phpCED5.tmp
[2] => C:\Windows\Temp\phpD175.tmp
)

[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
)

[size] => Array
(
[0] => 526638
[1] => 160341
[2] => 360070
)

)

我的问题是如何将上面这些数组转成最上面的数组格式?下面是我的程序源码
if($_FILES)
foreach($_FILES as $key => $file)
if(strexists($key, 'field_'))
$refid = intval(str_replace('field_', '', $key));
$field = $fields[$refid];
if($refid && $field && $file['name'] && $field['type'] == 'image')
$entry = array();
$entry['reid'] = $reid;
$entry['rerid'] = 0;
$entry['refid'] = $refid;

echo "<pre>";
print_r($file);
echo "</pre>";
die;
$ret = file_upload($file);

if(!$ret['success'])
message('上传图片失败, 请稍后重试.');

$entry['data'] = trim($ret['path']);
$datas[] = $entry;




别听楼上的胡说,html5的表单,支持批量选择文件批量上传。楼主你这样,没必要去处理数组,只要遍历$_FILES['tmp_name'])就可以了。

$i=0;
foreach($_FILES['tmp_name']) 

 $type=$_FILES['type'][$i];
//之后根据type移动tmp文件到相应的文件夹。
 $i++;

参考技术A 一个input只能放一个文件 不可以放多个文件的 要实现多图上传 那就使用js动态生成多个input

phpcms V9 前台自定义表单中提交多图字段

phpcms V9 中的自定义字段支持图片上传和多图上传,但是上图片后 看不到的,因为TA直接输出了数组,没有编译过!

想直接在表单后台显示其上传的图片只需要修改表单的模版即可,下面是修改的文件和相关代码:

首先找到表单的页面模版,“../phpcms/modules/formguide/templates/formguide_info_view.tpl.php”,打开并编辑!

<?php  
if(is_array($forminfos_data)){  
    foreach($forminfos_data as $key => $form){  
?>     
    <tr>  
        <td>< ?php echo $fields[$key][‘name‘]?>:</td>  
        <td>< ?php echo $form?></td>  
   
   
        </tr>  
<?php   
    }  
}  
?>

将其替换为:

<?php foreach($forminfos_data as $key => $val): ?> 
<tr> 
    <?php if(is_array($val) && $key === ‘imgs‘): ?> 
    <td><?php echo $fields[$key][‘name‘] ?>:</td> 
    <td><?php foreach($val as $v): ?> 
        <a href="<?php echo $v[‘url‘] ?>" target="_blank" ><img src=\‘#\‘" /></a> 
    <?php endforeach ?></td> 
    <?php else: ?> 
    <td><?php echo $fields[$key][‘name‘] ?>:</td> 
    <td><?php echo $val ?></td> 
    <?php endif ?> 
</tr> 
<?php endforeach ?>

效果截图:

技术分享

本文出自 “Jack_phpcms” 博客,请务必保留此出处http://maifang158.blog.51cto.com/5433990/1928753

以上是关于下面这段php代码如何实现多图上传的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap+PHP实现多图上传

求PHP多图上传代码

PHP + JQuery 实现多图上传并预览

phpcms V9 前台自定义表单中提交多图字段

多图上传控制器及模型代码thinkphp5+layui实现多图上传保存到数据库,可以实现图片自由排序,自由删除。

Laravel5多图上传和Laravel5单图上传的功能实现