加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP图片 文件批量传输代码

发布时间:2023-06-14 12:52:22 所属栏目:PHP教程 来源:
导读:不管是文件还是图片批量上传我们第一个是在html中做name=userfile[]这种数组变量,在php接受中我们做for ($_i=0; $_i<$_cont; $_i++)遍历这样就可以实现文件批量上传了,下面我来看一个实例,代码如下:<?php session_st

不管是文件还是图片批量上传我们第一个是在html中做name=userfile[]这种数组变量,在php接受中我们做for ($_i=0; $_i<$_cont; $_i++)遍历这样就可以实现文件批量上传了,下面我来看一个实例,代码如下:

<?php 

session_start(); 

?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>PHP文件批量上传</title> 

<style> 

* {margin:0; padding:0; list-style:none;} 

.content {width:400px; height:auto; margin:0 auto; margin-top:60px; padding-bottom:30px; background:#ffd3b6; border:dashed 1px #f90} 

.content h1 { width:400px; height: 30px; line-height:30px; text-align:center; font-family:"微软雅黑"; font-size:14px; color:#000} 

.content .error {width:300px; height:auto; line-height:30px; text-align:center; margin:0 auto; color:#f00} 

.content .con {width:340px; height:auto; margin:0 auto; font-size:12px;} 

.content #file { width:280px; height:20px; border:solid 1px #ccc; background:#fff; margin:10px 0px 6px 0; font-size:12px;} 

.content #send { width:60px; height:22px; border:solid 1px #ccc; background:#fff; font-size:12px; margin-top:10px;} 

</style> 

<script type="text/javascript" src="js/jquery.js"></script> 

<script> 

$(document).ready(function() { 

$('#cont').val($('.file #file').size()); 

$('#send').eq(0).click(function() { 

var filesize=$('.file #file').size(); 

$('.file').append("<input type='file' name='userfile[]' id='file'/>"); 

$('#cont').val(filesize+1); 

}); 

}); 

</script> 

</head> 

<body> 

<div> 

<h1>PHP文件批量上传</h1> 

<div> 

<div> 

<?php 

if ($_GET['up']==up) { 

//防止重复提交 

if ($_SESSION['file']==$_GET['irand']) { 

$_cont=intval($_POST['cont']);   //将file框总数接收并转换成整型 

$_size=20000;                    //设置限制文件大小 

$_dir='pdir/';                   //文件保存目录 

function size($_size) { 

//判断文件大小是否大于1024bit 如果大于,则将大小取值为KB,以此类推 

if ($_size>1024*1024) { 

return round($_size/1024/1024,2).' MB'; 

}else if ($_size>1024) { 

$_size=$_size/1024; 

return ceil($_size).'KB'; 

}else { 

return $_size.' bit'; 

//设置上传图片的类型,设置图片上传大小 

$_upfiles = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif'); 

//利用for循环上传文件 

for ($_i=0; $_i<$_cont; $_i++) { 

if (is_array($_upfiles)) { 

if (!in_array($_FILES['userfile']['type'][$_i],$_upfiles)) { 

exit('请上传格式为:jpg,png,gif的文件<br /><a href="pupload.php">返回</a>'); 

//判断文件大小 

if ($_FILES['userfile']['size'][$_i]>$_size) { 

exit('上传文件不能超过:'.size($_size)); 

//检测文件是否已经上传 

if ($_FILES['userfile']['error'][$_i]>0) { 

switch ($_FILES['userfile']['error'][1]) { 

case 1: echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值'; 

break; 

case 2: echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值'; 

break; 

case 3: echo '文件只有部分被上传'; 

break; 

case 4: echo '没有文件被上传'; 

break; 

case 6: echo '找不到临时文件夹'; 

break; 

case 7: echo '文件写入失败'; 

break; 

exit; 

//获取文件扩展名 

if (!is_dir($_dir)) { 

mkdir($_dir,0700); 

//生成随笔数 

$_rand=mt_rand(0,100000); 

//获取文件扩展名 

$_n=explode('.',$_FILES['userfile']['name'][$_i]);  //将文件名分割 

$_file_len=count($_n);         //返回数组长度 

//确保获取的扩展名是最后一个.后面的 

$_name=$_dir.time().'_'.$_rand.'.'.$_n[$_file_len-1]; 

//移动文件到指定的目录 

if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) { 

if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) { 

exit('文件移动失败'); 

}else { 

echo '文件上传成功<br />'; 

echo '文件路径:'.$_name.'<br />'; 

echo '文件大小:'.size(filesize($_name)); 

echo '<br /><a href="pupload.php">返回继续上传</a>'; 

}else { 

exit('上传的临时文件不存在,无法将文件移动到指定文件夹'); 

//销毁session变量,有几种方法 

//第一种,销毁所有session变量:session_destroy(); 

//第二种:销毁单个如:$_SESSION['file']='' 

session_destroy(); 

exit; 

}else { 

exit('您已经提交过了,不能重复提交<br /><a href="pupload.php">返回</a>'); 

?> 

</div> 

<?php $_irand=mt_rand(0,1000000); $_SESSION['file']=$_irand; ?> 

<form action="?up=up&irand=<?php echo $_irand; ?>" method="post" enctype="multipart/form-data"> 

<input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> 

<input type="hidden" name="cont" value="" id="cont" /> 

<div>  //开源软件:Cuoxin.com 

<input type="file" name="userfile[]" id="file"/> 

<input type="file" name="userfile[]" id="file"/> 

<input type="file" name="userfile[]" id="file"/> 

<input type="file" name="userfile[]" id="file"/> 

</div> 

<br /> 

<input type="button" name="send" value=" 添加一个 " id="send"/> 

<input type="submit" name="send" value=" 点击上传 " id="send"/> 

</form> 

</div> 

</div> 

</body> 

核心原理分析:在多文件上传中我们前台最重要的是如下代码:

<input type="file" name="userfile[]" id="file"/> 

<input type="file" name="userfile[]" id="file"/> 

<input type="file" name="userfile[]" id="file"/> 

<input type="file" name="userfile[]" id="file"/> 

这几行代码有细节的朋友会发现name="userfile[]"了,这个是以数组存储了,这样我们如果使用js也可以这样增加<input type="file" name="userfile[]" id="file"/>就可以了,那么在php是如何获取的呢.

在多文件上传中php处理是一个关键,代码如下:

for ($_i=0; $_i<$_cont; $_i++) { 

if (is_uploaded_file($_FILES['userfile']['tmp_name'][$_i])) { 

if (!@move_uploaded_file($_FILES['userfile']['tmp_name'][$_i],$_name)) { 

exit('文件移动失败'); 

}else { 

echo '文件上传成功<br />'; 

echo '文件路径:'.$_name.'<br />'; 

echo '文件大小:'.size(filesize($_name)); 

echo '<br /><a href="pupload.php">返回继续上传</a>'; 

这里显示很简单我们会看到有一个for,for就是遍历数组,遍历userfile[]数组,然后再由$_FILES['userfile']['tmp_name'][$_i]来获取不同文件图片再进行上传即可,注意[$_i]就是你的多文件上传项了,只是保存在了数组中.

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章