导航:首页 > 编程语言 > php文件上传文件分割

php文件上传文件分割

发布时间:2022-09-22 15:18:37

1. php开发,现在要做一个文件上传的功能,文件比较大500M+最大的2G,这个如何处理

php 很少做那么大的文件,因为php每次默认的执行时间是30s,确实要这样做,你要做很多工作才能达到,不是几句就能做到的

2. 怎么用php实现文件的上传,要求文件类型为jpg,大小不超过2m,上传的文件存放在u

$_FILES官方文档

你可以看看官方的$_FILES文档,里面有对$_FILES的内容的解释。

想通过PHP来处理文件信息就得通过$_FILES的内容来处理,比如文件类型可以用type来判断,要求文件类型为jpg,那就判断if ($_FILES['file1']['type'] === 'image/jpeg'),这里的file1并不是绝对的,视情况而定。

当然如果你觉得判断类型太麻烦,你也可以直接从name中判断后缀名,自己将文件名分割一下就好了。大小可以用size,默认单位是字节,不超过2M就要除以1024*1024了,可以将字节转换到兆字节。

要将上传的文件放在U目录下,就用move_uploaded_file函数来解决,move_uploaded_file官方文档

3. 在php curl库中利用post请求中怎么将一个大文件分成数据块上传

1、正则截取你想要拆分的数据;
2、explode 截取

4. php文件上传文件问题

class ieb_upload{
var $FormName; //文件域名称
var $Directroy; //上传至目录
var $MaxSize; //最大上传大小
var $CanUpload; //是否可以上传
var $doUpFile; //上传的文件名
var $sm_File; //缩略图名称
var $Error; //错误参数

function ieb_upload($formName='', $dirPath='', $maxSize=2097152) //(1024*2)*1024=2097152 就是 2M
{
global $FormName, $Directroy, $MaxSize, $CanUpload, $Error, $doUpFile, $sm_File;
//初始化各种参数
$FormName = $formName;
$MaxSize = $maxSize;
$CanUpload = true;
$doUpFile = '';
$sm_File = '';
$Error = 0;

if ($formName == ''){
$CanUpload = false;
$Error = 1;
break;
}

if ($dirPath == ''){
$Directroy = $dirPath;
}else{
$Directroy = $dirPath.'/';
}
}

//检查文件是否存在
function scanFile()
{
global $FormName, $Error, $CanUpload;

if ($CanUpload){

$scan = is_readable($_FILES[$FormName]['name']);

if ($scan){
$Error = 2;
}

return $scan;
}
}

//获取文件大小
function getSize($format = 'B')
{
global $FormName, $Error, $CanUpload;

if ($CanUpload){

if ($_FILES[$FormName]['size'] == 0){
$Error = 3;
$CanUpload = false;
}

switch ($format){
case 'B':
return $_FILES[$FormName]['size'];
break;

case 'M':
return ($_FILES[$FormName]['size'])/(1024*1024);
}

}
}

//获取文件类型
function getExt()
{
global $FormName, $Error, $CanUpload;

if ($CanUpload){
$ext=$_FILES[$FormName]['name'];
$extStr=explode('.',$ext);
$count=count($extStr)-1;
}
return $extStr[$count];
}

//获取文件名称
function getName()
{
global $FormName, $CanUpload;

if ($CanUpload){
return $_FILES[$FormName]['name'];
}
}

//新建文件名
function newName()
{
global $CanUpload, $FormName;

if ($CanUpload){
$FullName=$_FILES[$FormName]['name'];
$extStr=explode('.',$FullName);
$count=count($extStr)-1;
$ext = $extStr[$count];

return date('YmdHis').rand(0,9).'.'.$ext;
}
}

//上传文件
function upload($fileName = '')
{
global $FormName, $Directroy, $CanUpload, $Error, $doUpFile;

if ($CanUpload){
if ($_FILES[$FormName]['size'] == 0){
$Error = 3;
$CanUpload = false;
return $Error;
break;
}
}

if($CanUpload){

if ($fileName == ''){
$fileName = $_FILES[$FormName]['name'];
}

$doUpload=@($_FILES[$FormName]['tmp_name'], $Directroy.$fileName);

if($doUpload)
{
$doUpFile = $fileName;
chmod($Directroy.$fileName, 0777);
return true;
}else{
$Error = 4;
return $Error;
}
}
}

//创建图片缩略图
function thumb($dscChar='',$width=150,$height=113)
{
global $CanUpload, $Error, $Directroy, $doUpFile, $sm_File;

if ($CanUpload && $doUpFile != ''){
$srcFile = $doUpFile;

if ($dscChar == ''){
$dscChar = 'sm_';
}

$dscFile = $Directroy.$dscChar.$srcFile;
$data = getimagesize($Directroy.$srcFile,&$info);

switch ($data[2]) {
case 1:
$im = @imagecreatefromgif($Directroy.$srcFile);
break;

case 2:
$im = @imagecreatefromjpeg($Directroy.$srcFile);
break;

case 3:
$im = @imagecreatefrompng($Directroy.$srcFile);
break;
}

$srcW=imagesx($im);
$srcH=imagesy($im);
$ni=imagecreatetruecolor($width,$height);
imageresized($ni,$im,0,0,0,0,$width,$height,$srcW,$srcH);
$cr = imagejpeg($ni,$dscFile);
chmod($dscFile, 0777);

if ($cr){
$sm_File = $dscFile;
return true;
}else{
$Error = 5;
return $Error;
}
}
}

//显示错误参数
function Err(){
global $Error;
return $Error;
}

//上传后的文件名
function UpFile(){
global $doUpFile, $Error;
if ($doUpFile != ''){
return $doUpFile;
}else{
$Error = 6;
}
}

//上传文件的路径
function filePath(){
global $Directroy, $doUpFile, $Error;
if ($doUpFile != ''){
return $Directroy.$doUpFile;
}else{
$Error = 6;
}
}

//缩略图文件名称
function thumbMap(){
global $sm_File, $Error;
if ($sm_File != ''){
return $sm_File;
}else{
$Error = 6;
}
}

//显示版本信息
function ieb_version(){
return 'IEB_UPLOAD CLASS Ver 1.1';
}
}
?>

使用方法: <?php
//加载上传类
include('ieb_upload.inc');
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body style="font-size:12px;">
<form action="" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="提交">
<input name="scan" type="hidden" id="up" value="true">
</form><b /><br/>

<?php
if(isset($_REQUEST['scan'])){
//声明一个上传类
$upfos = new ieb_upload('file','upload');

/* ieb_upload( FormName, [Directroy, MaxSize])

FormName: 文件域的名称,这个例子里用的是 file 。这个参数不能省略。
Directroy: 保存上传文件的目录名称。此参数如果省略,文件将上传至该处理页目录中。
MaxSize: 允许上传的文件的大小限制。默认值为 2097152 byte (即 2M)。
*/

//返回将要上传的文件名称
echo '文件名称:' . $upfos -> getName() . '<br/>';

//返回文件后缀名
echo '文件类型:' . $upfos -> getExt() . '<br/>';

//返回文件大小
echo '文件大小:' . $upfos -> getSize() . '<br/>';

/* getSize( format )

format: 返回文件大小的单位值。默认值为 B。
B 为 byte
M 为 MB
例:getSize( 'B' );
*/

//随机生成的文件名
echo '随机文件:' . $upfos -> newName() . '<br/>';

/* 建议使用随机生成的文件名,以避免上传重名的文件。
例如: $upfos -> upload ( $upfos -> newName());
*/

//上传文件
$upfos -> upload();

/* upload( filename )

filename: 上传至服务器后生成这个文件名。默认值为原来的文件名。
*/

//生成缩略图
$upfos -> thumb();

/* thumb( [key, width, height] )

key: 生成缩略图的关键字。默认值为"sm_"。如果上传的文件名为 12345.jpg,缩略图的文件名就为 sm_12345.jpg。
width: 缩略图的宽度。默认值为 150 。
height: 缩略图的高度。默认值为 113。
例:$upfos -> thumb ( 'slt_', 200, 140);
*/

//返回生成的文件名
echo '生成文件:' . $upfos -> UpFile() . '<br/>';

//返回文件的路径
echo '文件路径:' . $upfos -> filePath() . '<br/>';

//返回缩略图的名称
echo '缩略图片:' . $upfos -> thumbMap() . '<br/>';

//返回上传类版本信息
echo '版本信息:' . $upfos -> ieb_version() . '<br/>';
}
?>
</body>
</html>

5. 如何在php上实现文件上传功能

PHP 一般使用 POST 方法上传文件,下面是一个简单的文件上传示例,里面有相关的注释:
up.htm 文件:
----------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Up Sample</title>
</head>
<body>
<form action="up.php" method="post" enctype="multipart/form-data">
<!--备注:表单中 enctype="multipart/form-data " 的意思,是设置表单的 MIME 编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了 multipart/form-data ,才能完整的传递文件数据,进行下面的操作,并且 method 要设置为 "post"-->
File:<br />
<input type="file" name="upfile" size="30"><br />

<!--上传框要设置 type="file"-->

<br />
<input type="submit" value="Upload">
</form>
</body>
</html>
----------
up.php 文件
----------
<?php
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])){

//如果有文件上传
//is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的,返回布尔值
//$_FILES['upfilename']['...'],其中的 'upfilename' 即为上传框的 name 属性
//$_FILES['upfile']['tmp_name'] -- 文件被上传后在服务端储存的临时文件名,一般是系统默认
if(!eregi('pdf', $_FILES['upfile']['type'])){

//我们这里假设你要上传一个 pdf 文件
//if(!eregi('pdf', $_FILES['upfile']['type'])) 这个是判断上传文件类型的,是不是 pdf 文件,当然,若是想判断是否是 jpg 文件的话,将 pdf 改成 jpg 就可以了,即 if(!eregi('jpg', $_FILES['upfile']['type']))
//$_FILES['upfile']['type'] 是文件的 MIME 类型,如果浏览器提供此信息的话。例如“image/gif”
echo 'The uploaded file is not an pdf File! Please upload a right file!';
}else{
$filename = $_FILES['upfile']['name'];
//$filename = $_FILES['upfile']['name'],这里是指定上传后的文件名,这里使用的仍是原来的文件名字,($_FILES['upfile']['name'] 是原始文件的名字)
if(move_uploaded_file($_FILES["upfile"]["tmp_name"], dirname(__FILE__)."/upload_file/".$filename)){

//这里就是上传文件
//dirname(__FILE__)."/upload_file/".$file_name -- 指定上传的目标文件,假设你要上传的目标文件夹upload_file 是和当前文件(upload.php)在同一文件夹下
//chmod(dirname(__FILE__)."/upload_file/". $file_name, 0444);
//上面注释掉的是用来改变上传后文件的属性,444 即只有执行和读的权限(看情况加上)
echo $_FILES["upfile"]["name"] . " uploaded succeed!!!";

}else{
echo "Can't upload!!!";
}
}
}else{
echo "File is not selected";
}
//需要注意的:
/*
在你的 up.php 同级目录下建立 upload_file 文件夹,来存放上传的文件
在上传之前要看一下 php 的配置文件:php.ini 中的三处设置
1.是否允许文件上传:( file_uploads = On )
2.文件上传的最大 size:( upload_max_filesize )
3.post 的最大 size ( post_max_size ) 这个大小设置成和 uplod_max_filesize 一样大或比 uplod_max_filesize 大
*/
/*
这只是很简单的一个文件上传的例子,为了帮助理解,只是判断了一下上传文件的类型,还可以使用 if 语句来判断上传文件的大小($_FILES['upfile']['type'])),并进行提示控制等,相关可以查阅 $_FILE['upfile'] 数组的各个值分别代表什么
*/
?>

6. PHP实现浏览器端大文件分片上传如何实现

分片上传的原理就是通过切割上传文件,然后在浏览器的头部通过etag来进行划分文件传输,服务器端接收到文件片段和分割起始符之后,进行拼接文件,最后合成一个大文件。

你可以自己通过php来获取浏览器头部传输标志来进行文件的拼接组装,也可以通过现有的大文件传输类来上传文件。

关键点

记住分割文件点,也就是分割文件的顺序,拼接文件需要通过etag按照顺序拼接,分片可以并发传输,这其实也是并发下载的原理。

7. php 批量大文件上传下载如何实现

1.首先还是查看环境是否支持超大容量上传的支持,500M以上的文件通常为视频文件;

2.即然他要上传500M以上的文件,估计服务器性能必定非同凡想,所以暂可不考虑服务器硬件配置问题,但一定要考虑到网速问题,建议1000M以上出入速率,如少于这个数,你可以放弃这个方案了;

3.前面硬件都过关了,但程序也要加强了,一下上传500M是哪种语言都不能实现的,唯一解决方案,文件切割,如迅雷下载原理一样(采用续点上传),分成若干小块,然后全部上传完毕以后,再进行文件合成。

4.至于PHP的文件切割,切割后上传,以及文件合并,此类代码网上有许多,楼主可查询并选择适合你的代码,实现你的功能!

8. php怎样设置不允许哪些类型的文件上传,请给出代码

$arrDenyExts = array("gif", "jpeg", "jpg", "png"); //不允许上传文件的格式
$temp = explode(".", $_FILES["file"]["name"]); //按点分割文件名,这里根据
//$temp = explode(".","d:\test.jpg"); //按点分割文件名
$extension = end($temp);//获取最后一个元素,确保是文件格式
$isAllow = true;
foreach($arrDenyExts as $key=>$val) {
if($extension==$val) {
$isAllow=false;
break;
}
}
if($isAllow) {
echo "该文件格式允许上传<br/>";
} else {
echo "该文件格式不允许上传<br/>";
}

9. php上传大文件

<?php
ini_set('upload_max_filesize', $size);
?>
$size可以设定你想要的大小,大小不可以超过服务器内存。

阅读全文

与php文件上传文件分割相关的资料

热点内容
pdf光子 浏览:832
自拍软件文件夹名称大全 浏览:325
程序员留学移民 浏览:49
梁中间部位箍筋加密区 浏览:117
频谱分析pdf 浏览:750
乐2怎么升级安卓70 浏览:172
java中获取日期 浏览:506
单片机74hc245 浏览:272
美国历史上的总统pdf 浏览:751
程序员脱单实验室靠不靠谱 浏览:458
php中间四位手机号 浏览:870
永旺app怎么样了 浏览:516
压缩空气流量计算软件 浏览:650
智慧聊天app怎么激活 浏览:924
一加换机备份到哪个文件夹 浏览:736
支撑pdf 浏览:417
java空文件夹删除 浏览:587
安卓9跟81有什么区别 浏览:912
n1蓝宝书pdf 浏览:244
为什么安卓机拍照那么丑 浏览:696