php文件上传
PHP使用curl模拟post上传及接收文件的方法

PHP使用curl模拟post上传及接收文件的方法在PHP中,我们可以使用curl库来模拟POST请求进行文件的上传和接收。
Curl是一个功能强大的跨平台开放源代码网络传输工具,它支持多种网络协议,其中就包括HTTP/HTTPS协议。
下面是一种使用curl模拟POST上传文件的方法:1. 建立一个curl会话。
```php$ch = curl_init(;```2. 设置curl选项,包括URL、请求方法、请求头和请求体等。
```php$postData = arraycurl_setopt($ch, CURLOPT_POST, true); // 使用POST请求curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // 请求体数据curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回响应结果```3. 执行curl请求并获取响应结果。
```php$response = curl_exec($ch);```4. 关闭curl会话。
```phpcurl_close($ch);```注意事项:- 如果上传的文件需要使用其他请求参数一起提交,可以将额外的参数添加到$postData数组中。
- 在执行curl请求之前,可以通过curl_setopt设置其他一些选项,如请求超时时间、请求头信息等。
在服务端接收文件时,可以使用$_FILES全局变量来获取上传的文件信息。
例如,接收一个名为file的文件上传:```php$uploadedFile = $_FILES['file'];```可以通过$uploadedFile变量来访问文件的一些属性,如文件名、临时文件路径、文件大小等。
下面是一些常用的属性:- $uploadedFile['name']:获取上传文件的名称。
- $uploadedFile['tmp_name']:获取上传文件的临时文件路径,用于读取临时文件的内容。
【PHP】实现阿里云OSS文件上传(支持批量)

【PHP】实现阿⾥云OSS⽂件上传(⽀持批量)上传⽂件⾄阿⾥云OSS,整体逻辑是,⽂件先临时上传到本地,然后在上传到OSS,最后删除本地的临时⽂件(也可以不删,具体看⾃⼰的业务需求),具体实现流程如下:1、下载阿⾥云OSS对象上传SDK(PHP版)2、解压后,可⾃⾏修改⽬录名称,以下为本⼈项⽬实例(aliyun_oss改过之后的名称)项⽬⽬录结构如下:3、Index.php 为⽂件上传静态表单页4、do_upload.php 为⽂件处理控制页,封装的代码如下:上传⽂件相关的辅助函数可以⾃⾏封装,本⽂是为了便于展⽰,全部放在⼀个⽂件中 1 <?php2/**3 * @Class: do_upload.php4 * @Description: 控制器5 * @Date: 2019/10/166*/7header("Content-Type:text/html;charset=utf-8");8set_time_limit(0);9// error_reporting(E_ALL);10require __DIR__.'/AliyunOss.php';11if(!empty($_FILES['oss_file']) && !empty($_POST['type'])){12$file_arr = getFiles();13$AliyunOss = new AliyunOss();14 foreach ($file_arr as$file){15$res = upload_File($file,$type_name.'/'.$user_info['contact'],$user_info);16if(isset($res['fname']) && isset($res['dest']) && isset($res['file_name'])){17$result = $AliyunOss->upload_file($res['dest'],$res['fname']);18if($result){19//1、存⼊数据库此处部分变量及⼊库代码补全知道逻辑即可20$insert_time = date('Y-m-d H:i:s',time());21$fileData = array(22 'phone' => "'{$phone}'",23 'company_name' => "'{$oss_db->escape($user_info['contact'])}'",24 'insert_time' => "'{$insert_time}'",25 'file_name' => "'{$res['file_name']}'",26 'file_url' => "'{$result['oss_file']}'"27 );28$sql = "insert into `oss_file` (".implode(',', array_keys($fileData)).") values (".implode(',', array_values($fileData)).")";29$oss_db->query($sql);30if($oss_db->insert_id()){31//2、删除临时⽂件32unlink($res['dest']);33 }34 }35 }36 }37echo '上传成功';38header('Location:list.php');39die;40 }else{41echo '上传失败';42 }4344/**45 * ⽂件上传46 * @description47 * @param $file48 * @param string $path49 * @param $max_size50 * @param $allowExt51 * @return mixed52*/53function upload_File($file,$oss_dir = '',$user_info,$path = __DIR__.'/temp'){54$filename=$file['name'];55$temp_name=$file['tmp_name'];56$error=$file['error'];57$res = [];58if ($error==UPLOAD_ERR_OK) {59// if ($size>$max_size) {60 // $res['mes']=$filename."⽂件超过规定上传⼤⼩";61 // }62$ext = getExt($filename);63if (in_array($ext, array('exe'))) {64$res['mes']=$filename.'⾮法的⽂件';65 }66if (!is_uploaded_file($temp_name)) {67$res['mes']=$filename."⽂件不是通过HTTP POST ⽅法上传上传过来的";68 }6970if ($res) {71return$res;72 }7374if (!file_exists($path)) {75mkdir($path,0777,true);76chmod($path, 0777);77 }78$fname = getUniName($filename,$user_info);79$destination = $path.'/'.$fname.'.'.$ext;80if (move_uploaded_file($temp_name, $destination)) {81$res['mes'] = $filename.'上传成功';82$res['dest'] = $destination;83$res['fname'] = $oss_dir.'/'.$fname.'.'.$ext;84$res['file_name'] = $fname.'.'.$ext;85 }else{86$res['mes']=$filename."⽂件上传失败";87 }88 }else{89switch ($error) {90case '1':91$res['mes']="超过了配置⽂件上传⽂件的⼤⼩";92break;93case '2':94$res['mes']="超过表单设置上传⽂件⽂件的⼤⼩";95break;96case '3':97$res['mes']="⽂件部分被上传";98break;99case '4':100$res['mes']="没有⽂件被上传";101102break;103case '6':104$res['mes']="没有找到临时⽬录";105break;106case '7':107$res['mes']="⽂件不可写";108109break;110default:111$res['mes']="上传⽂件失败";112break;113 }114 }115116return$res;117118 }119/**120 * 获得⽂件扩展名121 * @param string $filename 上传⽂件名122 * @return string 返回扩展名123*/124function getExt($filename){125$arr=explode('.', basename($filename));126127return end($arr);128 }129/**130 * 获得⽂件唯⼀扩展名131 * @return string 经过md5后⽣成32位唯⼀的上传⽂件名132*/133function getUniName($fileName, $user_info)134 {135$new_fileName = substr($fileName,0,strrpos($fileName,'.'));136$oss_db = new data_base('10.1.51.64', 'root', 'abc@123456', 'dahua_oss');137$has_file = $oss_db->getRow("select * from `oss_file` where `phone` = '{$user_info['phone']}' and locate('{$fileName}',`file_url`)>0 ");138if ($has_file) {139$new_fileName .= '-1';140 }141return$new_fileName;142 }143144/**145 * 整理多个⽂件146 * @description147 * @return mixed148*/149function getFiles(){150$files = array();151foreach($_FILES as$file){152$fileNum=count($file['name']);153for ($i=0; $i < $fileNum; $i++) {154$files[$i]['name']=$file['name'][$i];155$files[$i]['type']=$file['type'][$i];156$files[$i]['tmp_name']=$file['tmp_name'][$i];157$files[$i]['error']=$file['error'][$i];158$files[$i]['size']=$file['size'][$i];159 }160 }161return$files;162 }163164 ?>5、AliyunOss.php OSS⽂件上传接⼝类1 <?php2/**3 * @Class: AliyunOss.php4 * @Description: 控制器5 * @Date: 2019/10/166*/7header("Content-Type:text/html;charset=utf-8");8// error_reporting(E_ALL);910if (is_file(__DIR__ . '/aliyun_oss/autoload.php')) {11require_once __DIR__ . '/aliyun_oss/autoload.php';12 }1314use OSS\OssClient;15use OSS\Core\OssException;1617// 阿⾥云主账号AccessKey拥有所有API的访问权限,风险很⾼。
php上传2M以上文件限制问题

php上传2M以上⽂件限制问题
最近在项⽬中碰到了⼀个问题,客户反映不能上传2M以上的图⽚,因为是接⼿的⽼项⽬,对代码不是很熟悉,先是看代码,⼜在⽹上查了不少资料,知道要改配置⽂件,但是仍是花了⼀天的多时间才解决,回头思考该问题,有⼀些经验,分享给⼤家,希望能给碰到该问题的朋友⼀些帮助。
不能上传2M以上⽂件原因分析:
1、程序内做了限制;(主要是接⼿⽼项⽬时需要考虑,不过,此项排查放在最后,因为看别⼈的代码真的很慢)
2、php.ini内使⽤的是默认配置;
3、linux系统本⾝限制了上传⽂件的⼤⼩;
解决办法:
1、检查程序,去掉⼤⼩限制;(最后使⽤)
2、修改php.ini⽂件内的以下各项的值:
post_max_size
upload_max_filesize
memory_limit
如果⽹络速度较慢或者上传⼤于8M的⽂件需要考虑以下两项配置:
max_execution_time=600;//如果等于0,表⽰没有限制
max_input_time = 600 ; 这两项的单位都是秒,作⽤⼤概可以理解为运⾏或上传的时间等。
3、修改/usr/local/nginx/conf/nginx.conf ⽂件,查找 client_max_body_size 将后⾯的值设置为你想设置的值(我⽤的是nginx);
如果⽤的是apache2可以去/etc/httpd/conf.d/access.conf/下⾯看php.conf ⽂件,修改limitrequestbody 524288的值(未测试)。
4、***千万记得要【重启服务】(nginx和php服务都需要重启)。
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)

php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件) php上传图片文件(gif,jpg,bmp,png,psd,ico)史上最完全oophper亲测版php文件上传之文件类型对应表,ie,火狐各一份。
ie 火狐* application/octet-stream //应用程序323 text/h323acx application/internet-property-stream ai application/postscriptaif audio/x-aiffaifc audio/x-aiffaiff audio/x-aiffasf video/x-ms-asfasr video/x-ms-asfasx video/x-ms-asfau audio/basicavi video/x-msvideoaxs application/olescriptbas text/plainbcpio application/x-bcpiobin application/octet-streambmp image/bmpc text/plaincat application/vnd.ms-pkiseccat cdf application/x-cdfcer application/x-x509-ca-cert class application/octet-stream clp application/x-msclipcmx image/x-cmxcod image/cis-codcpio application/x-cpiocrd application/x-mscardfilecrl application/pkix-crlcrt application/x-x509-ca-cert csh application/x-cshcss text/cssdcr application/x-directorder application/x-x509-ca-cert dir application/x-directordll application/x-msdownload dms application/octet-streamdoc application/msworddot application/msworddvi application/x-dvidxr application/x-directoreps application/postscriptetx text/x-setextevy application/envoyexe application/octet-streamfif application/fractalsflr x-world/x-vrmlgif image/gifgtar application/x-gtargz application/x-gziph text/plainhdf application/x-hdfhlp application/winhlphqx application/mac-binhex40hta application/htahtc text/x-componenthtm text/htmlhtml text/htmlhtt text/webviewhtmlico image/x-iconief image/iefiii application/x-iphoneins application/x-internet-signup isp application/x-internet-signup jfif image/pipegjpe image/jpegjpeg image/jpegjpg image/pjpegjs application/x-javascript latex application/x-latexlha application/octet-stream lsf video/x-la-asflsx video/x-la-asflzh application/octet-stream m13 application/x-msmediaview m14 application/x-msmediaview m3u audio/x-mpegurlman application/x-troff-man mdb application/x-msaccess me application/x-troff-memht message/rfc822mhtml message/rfc822mid audio/midmny application/x-msmoney mov video/quicktimemovie video/x-sgi-moviemp2 video/mpegmp3 audio/mpegmpa video/mpegmpe video/mpegmpeg video/mpegmpp application/vnd.ms-projectmpv2 video/mpegms application/x-troff-msmvb application/x-msmediaviewnws message/rfc822oda application/odap10 application/pkcs10p12 application/x-pkcs12p7b application/x-pkcs7-certificates p7c application/x-pkcs7-mimep7m application/x-pkcs7-mimep7r application/x-pkcs7-certreqresp p7s application/x-pkcs7-signature pbm image/x-portable-bitmappdf application/pdfpfx application/x-pkcs12pgm image/x-portable-graymappko application/ynd.ms-pkipkopma application/x-perfmonpmc application/x-perfmonpml application/x-perfmonpmr application/x-perfmonpmw application/x-perfmonpng image/x-pngpnm image/x-portable-anymappot, application/vnd.ms-powerpointppm image/x-portable-pixmappps application/vnd.ms-powerpointppt application/vnd.ms-powerpointprf application/pics-rulesps application/postscriptpub application/x-mspublisherqt video/quicktimera audio/x-pn-realaudioram audio/x-pn-realaudioras image/x-cmu-rasterrgb image/x-rgbrmi audio/midroff application/x-troffrtf application/rtfrtx text/richtextscd application/x-msschedulesct text/scriptletsetpay application/set-payment-initiation setreg application/set-registration-initiation sh application/x-shshar application/x-sharsit application/x-stuffitsnd audio/basicspc application/x-pkcs7-certificates spl application/futuresplashsrc application/x-wais-sourcesst application/vnd.ms-pkicertstore stl application/vnd.ms-pkistlstm text/htmlsv4cpio application/x-sv4cpiosv4crc application/x-sv4crct application/x-trofftar application/x-tartcl application/x-tcltex application/x-textexi application/x-texinfotexinfo application/x-texinfotgz application/x-compressedtif image/tifftiff image/tifftr application/x-trofftrm application/x-msterminaltsv text/tab-separated-valuestxt text/plainuls text/iulsustar application/x-ustarvcf text/x-vcardvrml x-world/x-vrmlwav audio/x-wavwcm application/vnd.ms-works wdb application/vnd.ms-works wks application/vnd.ms-works wmf application/x-msmetafile wps application/vnd.ms-workswri application/x-mswritewrl x-world/x-vrmlwrz x-world/x-vrmlxaf x-world/x-vrmlxbm image/x-xbitmapxla application/vnd.ms-excelxlc application/vnd.ms-excelxlm application/vnd.ms-excelxls application/vnd.ms-excelxlt application/vnd.ms-excelxlw application/vnd.ms-excelxof x-world/x-vrmlxpm image/x-xpixmapxwd image/x-xwindowdumpz application/x-compresszip application/zip -firefox application/x-zip-compressed -IEphp上传压缩文件(rar,7z,zip)php上传可执行文件(exe)php上传视频文件,音乐文件,歌词文件(avi,rmvb,3gp,flv,mp3,wav,krc,lrc)php上传文本文件和文档文件(word->doc,excel->xls,幻灯片->ppt,pdf,chm)php上传数据库文件(access文件,sql文件,con文件,日志文件log, dat文件)php上传网页文件,脚本文件,字体文件(ini,php,html,htm,字体文件:ttf,fon, js ,x ml)php上传其他文件(class类文件,dll动态加载库文件)。
实用的PHP实例代码20个2篇

实用的PHP实例代码20个2篇PHP是一种广泛应用于Web开发的脚本语言,具有简单、灵活、易学的特点。
它不仅可以用来开发网站,还可以用来编写各种实用的应用程序。
在本文中,我们将为您介绍20个实用的PHP实例代码和使用场景。
第一篇:1-10个实例1. 文件上传文件上传是Web开发中常用的功能之一。
使用PHP,您可以很容易地实现文件上传功能,从而让用户能够向您的网站或应用程序上传文件。
2. 邮件发送PHP提供了发送电子邮件的功能,您可以使用PHP编写代码来发送电子邮件,例如发送注册确认邮件、找回密码邮件等。
3. 图片缩放PHP提供了强大的图像处理功能,您可以使用PHP来缩放图片,为您的网站或应用程序提供更好的用户体验。
4. 数据库连接在许多Web应用程序中,需要与数据库进行交互。
PHP提供了各种数据库连接操作,您可以使用PHP来连接各种类型的数据库,如MySQL、Oracle等。
5. 表单验证表单验证是保证用户输入数据有效和安全的重要环节。
PHP提供了丰富的表单验证函数,您可以使用PHP来验证用户提交的表单数据,例如检查邮箱格式、密码强度等。
6. 分页功能在处理大量数据时,分页功能非常有用。
使用PHP,您可以轻松地实现分页功能,让用户能够浏览和导航数据的不同页面。
7. 登录认证登录认证是保护网站或应用程序安全的重要步骤。
使用PHP,您可以编写代码来实现用户登录认证功能,例如检查用户名和密码是否匹配等。
8. 数据加密在处理敏感信息时,数据加密是非常重要的。
PHP提供了各种数据加密函数,您可以使用PHP来对敏感数据进行加密和解密。
9. 生成验证码验证码是防止机器人和恶意攻击的有效手段。
使用PHP,您可以生成随机验证码,并将其嵌入到表单中,确保只有人类用户能够提交表单。
10. 数据备份定期数据备份是保证数据安全的重要环节。
使用PHP,您可以编写脚本来自动备份数据库,确保数据的安全可靠。
第二篇:11-20个实例11. 数据导出有时候,需要将数据库中的数据导出为Excel、CSV等格式,以方便进行数据分析或其他用途。
ThinkPHP5.1教程66.上传功能

<input type="file" name="image[]">
<input type="file" name="image[]"> <input type="file" name="image[]"> <input type="submit" value="确定"> </form>
public function uploads() {
66. 上传功能
学习要点: 1.上传功能
本节课我们来学习一下系统提供的上传方法,如何使用这个方法进行文件上传。
一.上传功能 1. 如果要实现上传功能,首先需要建立一个上传表单,具体如下:
<form action="http://localhost/tp5.1test3/public/upload" enctype="multipart/form-data" method="post">
//获取表单的上传数据 $files = Request::file('image'); foreach ($files as $file) {
PHP教程-文件上传
<html> <head><title>浏览上传目录</title></head> <body> <h1>浏览</h1> <?php $current_dir = './uploads/'; $dir = opendir($current_dir); echo "<p>上传目录是: $current_dir</p>"; echo '<p>上传列表:</p><ul>'; while ($file = readdir($dir)) { echo "<li>$file</li>"; } echo '</ul>'; closedir($dir); ?> </body></html>
当需要上传多个文件的情况,有两种实现的 解决方法:
使用不同的表单元素
<input type=file name=file_a>
<input type=file name=file_b>
使用数组格式的表单元素
<input type=file name=file[1]>
<input type=file name=file[2]>
创建和修改目录
mkdir -- 新建目录
bool mkdir ( string pathname [, int mode] ) 如:mkdir("/path/to/my/dir", 0700);
PHP上传文件方法及获取文件后缀名函数
functionuploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_ dir){$MAX_SIZE = 2000000;$FILE_MIMES =array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png','image/x -png');$FILE_EXTS = array('.jpg','.gif','.png','.JPG','.GIF','.PNG');$file_path = $upload_dir.$targetname;if(!is_dir($upload_dir)){if(!mkdir($upload_dir))die("文件上传目录不存在并且无法创建文件上传目录");if(!chmod($upload_dir,0755))die("文件上传目录的权限无法设定为可读可写");}if($size>$MAX_SIZE)die("上传的文件大小超过了规定大小");if($size == 0)die("请选择上传的文件");if(!in_array($type,$FILE_MIMES) || !in_array($ext,$FILE_EXTS))die("请上传符合要求的文件类型");if(!move_uploaded_file($tmp_name, $file_p ath))die("复制文件失败,请重新上传");switch($error){case 0:echo "图片上传成功...<br/>";echo "3秒钟后自动跳转...如果没有跳转,<a href='uploadFile.php'>请点击这里</a>";return ;case 1:die("上传的文件超过了php.ini 中upload_max_files ize选项限制的值");case 2:die("上传文件的大小超过了HTML 表单中MAX_FILE_SIZE 选项指定的值");case 3:die("文件只有部分被上传");case 4:die("没有文件被上传");}}似乎PHP没有自带获取文件后缀名的函数,翻书也没找到,网上搜索也没有,就自己写了个函数,很轻松就可以获取了。
php处理ftp上传文件
用php实现文件上传二法--------------------------------------------------------------------------------PHP(Hypertext Preprocessor)是一种HTML 内嵌式的语言(类似IIS 上的ASP)。
而PHP 独特的语法混合了C、Java、Perl 以及PHP 式的新语法。
它可以比CGI 或者Perl 更快速的执行动态网页。
除此之外,用PHP 写出来的Web 后端CGI 程序,可以很轻易的移植到不同的系统平台上。
我们在做网站时,需要访问者的参于才能将网站建设得更加引人注目,这就要求我们从访问者那里得到文章、图片等。
因此,文件上传成为网页中必不可少的功能。
现在我就利用现在流行的编程语言PHP,用两种方法来说明其功能的实现。
一、利用php的文件函数来实现上传这段代码分为两个文件,一个为upload.html,一个是upload.php。
上传文件选择:upload.html 代码如下:--------------------------------------------------------------------------------<html> <head> <title> 上载文件表单</title> </head><body><form enctype=\ "multipart/form-data\ " action=\ "upload.php\ " method=\ "post\ "><input type=\ "hidden\ " name=\ "max_file_size\ " value=\ "100000\ "><center> 请选择文件:<input name=\ "userfile\ " type=\ "file\ "><input type=\ "submit\ " value=\ "上传文件\ "></center></form></body></html>--------------------------------------------------------------------------------*** 说明***1、请注意<form enctype=\ "multipart/form-data\ "......> 这是一个标签,我们要实现文件的上传,必须指定为multipart/form-data ,否则服务器将不知道你在干什么!2、值得注意的是文件upload.html中表单选项MAX_FILE_SIZE 的隐藏值域,通过设置其Value(值)可以限制上载文件的大小。
一个完整的php上传功能完整代码(upload代码)
⼀个完整的php上传功能完整代码(upload代码)创建⼀个⽂件上传表单允许⽤户从表单上传⽂件是⾮常有⽤的。
创建上传脚本"upload_file.php" ⽂件含有供上传⽂件的代码:<?phpif ($_FILES["file"]["error"] > 0){echo "错误:" . $_FILES["file"]["error"] . "<br>";}else{echo "上传⽂件名: " . $_FILES["file"]["name"] . "<br>";echo "⽂件类型: " . $_FILES["file"]["type"] . "<br>";echo "⽂件⼤⼩: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";echo "⽂件临时存储的位置: " . $_FILES["file"]["tmp_name"];}?>通过使⽤ PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传⽂件。
第⼀个参数是表单的 input name,第⼆个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
php文件上传
2017-12-30
•php默认文件最大3m
php默认上传文件的最大数
•post限制
•post_max_size=3M 配置最大文件上传数•upload限制
•upload_max_filesze=303M
常见数据格式
•图片文件
imgae/gif,image/jpg,image/jpeg,image/png •2纯文本文件
text/plain,text/html
•3二进制文件
application/cotet-stream
•4音频文件
audio/mpeg
•5视频格式
video/avi
video/mp4
文件下载
•1header(“content-type:image/png”);
•2header(“content-disposition:attachment;filename=abc.txt”);•3header(“content-length:37kb”);
•4readfile(abc.txt)
php上传文件处理函数
•1.is_uploaded_file
is_uploaded_file(tmp); 检测tmp文件是否是从表单提交过来的•2.move_uploaded_file
move_uploaded_file($tmp,$file);, $tmp是从提交过来的临时文件,$file 目的地
•filetype()
测试文件或目录•is_dir()
判断是否是目录•is_file()
判断是否是文件•file_exists()
文件或目录是否存在•filesize()
文件大小或目录大小
•filetype
filetype — 取得文件类型
•说明
string filetype ( string $filename )
•返回文件的类型。
•参数
filename
文件的路径。
•返回值
返回文件的类型。
可能的值有 fifo,char,dir,block,link,file 和 unknown。
如果出错则返回 FALSE。
如果 stat 调用失败或者文件类型未知的话 filetype() 还会产生一个E_NOTICE 消息。
谢谢。