php上传代码讲解

合集下载

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

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上传图片到数据库并显示的实例代码

PHP上传图片到数据库并显示的实例代码

PHP上传图⽚到数据库并显⽰的实例代码PHP上传图⽚到数据库并显⽰1、创建数据表CREATE TABLE ccs_image (id int(4) unsigned NOT NULL auto_increment,description varchar(250) default NULL,bin_data longblob,filename varchar(50) default NULL,filesize varchar(50) default NULL,filetype varchar(50) default NULL,PRIMARY KEY (id))engine=myisam DEFAULT charset=utf82、⽤于上传图⽚到服务器的页⾯ upimage.html<!doctype html><html><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><style type="text/css">*{margin: 1%}</style><title>Document</title></head><body><form method="post" action="upimage.php" enctype="multipart/form-data">描述:<input type="text" name="form_description" size="40"><input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <br>上传⽂件到数据库:<input type="file" name="form_data" size="40"><br><input type="submit" name="submit" value="submit"></form></body></html>3、处理图⽚上传的php upimage.php<?phpif (isset($_POST['submit'])) {$form_description = $_POST['form_description'];$form_data_name = $_FILES['form_data']['name'];$form_data_size = $_FILES['form_data']['size'];$form_data_type = $_FILES['form_data']['type'];$form_data = $_FILES['form_data']['tmp_name'];$dsn = 'mysql:dbname=test;host=localhost';$pdo = new PDO($dsn, 'root', 'root');$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));//echo "mysqlPicture=".$data;$result = $pdo->query("INSERT INTO ccs_image (description,bin_data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); if ($result) {echo "图⽚已存储到数据库";} else {echo "请求失败,请重试";注:图⽚是以⼆进制blob形式存进数据库的,像这样4、显⽰图⽚的php getimage.php<?php$id =2;// $_GET['id']; 为简洁,直接将id写上了,正常应该是通过⽤户填⼊的id获取的$dsn ='mysql:dbname=test;host=localhost';$pdo = new PDO($dsn,'root','root');$query = "select bin_data,filetype from ccs_image where id=2";$result = $pdo->query($query);$result = $result->fetchAll(2);// var_dump($result);$data = $result[0]['bin_data'];$type = $result[0]['filetype'];Header( "Content-type: $type");echo $data;5、到浏览器查看已经上传的图⽚,看是否可以显⽰以上就是本次介绍的全部相关知识点,感谢⼤家的学习和对的⽀持。

php post request 代码实例

php post request 代码实例

一、介绍在Web开发中,经常需要向服务器发送POST请求来提交表单数据或者其他需要处理的信息。

PHP是一种常用的服务器端脚本语言,本文将介绍如何使用PHP发送POST请求,并给出代码实例。

二、POST请求简介POST请求是HTTP协议中的一种请求方式,用于向服务器提交数据。

与GET请求不同,POST请求将数据放在请求的body部分,而不是放在URL中。

POST请求通常用于提交表单数据或上传文件等操作,而不会在URL中暴露数据。

三、使用PHP发送POST请求的步骤要使用PHP发送POST请求,需要按照以下步骤进行:1. 创建一个URL对象,指定要发送请求的目标位置区域;2. 创建一个POST请求对象,并设置请求的参数;3. 发送请求,并接收服务器的响应。

下面,我们将给出一个具体的代码实例,来演示如何使用PHP发送POST请求。

四、代码实例以下是一个简单的例子,演示了如何使用PHP发送POST请求。

```php<?php// 要发送POST请求的目标位置区域$url = '// 要提交的数据$data = array('param1' => 'value1','param2' => 'value2');// 初始化一个cURL会话$ch = curl_init();// 设置cURL请求的目标位置区域curl_setopt($ch, CURLOPT_URL, $url);// 设置请求方式为POSTcurl_setopt($ch, CURLOPT_POST, 1);// 设置POST请求的数据curl_setopt($ch, CURLOPT_POSTFIELDS, 网络协议_build_query($data));// 执行请求,并接收服务器的响应$response = curl_exec($ch);// 关闭cURL会话curl_close($ch);// 处理服务器的响应echo $response;>```以上代码首先指定了要发送POST请求的目标位置区域和要提交的数据,然后使用cURL库创建了一个POST请求,并设置了请求的参数。

实用的PHP实例代码20个2篇

实用的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.上传功能

ThinkPHP5.1教程66.上传功能
//输出上传信息 echo $info->getExtension(); echo '<br>'; echo $info->getSaveName(); echo '<br>'; echo $info->getFileName(); } else { //输出错误信息 echo $file->getError(); } } }
<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教程-文件上传

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使用curl请求实现post方式上传图片文件功能示例

PHP使用curl请求实现post方式上传图片文件功能示例

PHP使⽤curl请求实现post⽅式上传图⽚⽂件功能⽰例本⽂实例讲述了PHP使⽤curl请求实现post⽅式上传图⽚⽂件功能。

分享给⼤家供⼤家参考,具体如下:在调⽤第三⽅api接⼝时,有时会遇到通过http协议上传图⽚,以下是⼀个微信公众平台新增永久素材的例⼦;php代码:/* 使⽤curl函数 */$url = "https:///cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=image";$post_data = array('media' => '@bag03.jpg',);$response = curl_http($url, 'POST', $post_data);$params = array();$params = json_decode($response,true);if (isset($params['errcode'])){echo "error:" . $params['errcode'];echo "msg :" . $params['errmsg'];exit;}var_dump( $params );/*** http请求⽅式: 默认GET*/function curl_http($url, $method="GET", $postfields){$ch = curl_init();curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_URL, $url);switch ($method) {case "POST":curl_setopt($ch, CURLOPT_POST, true);if (!empty($postfields)) {$hadFile = false;if (is_array($postfields) && isset($postfields['media'])) {/* ⽀持⽂件上传 */if (class_exists('\CURLFile')) {curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);foreach ($postfields as $key => $value) {if (isPostHasFile($value)) {$postfields[$key] = new \CURLFile(realpath(ltrim($value, '@')));$hadFile = true;}}} elseif (defined('CURLOPT_SAFE_UPLOAD')) {if (isPostHasFile($value)) {curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);$hadFile = true;}}}$tmpdatastr = (!$hadFile && is_array($postfields)) ? http_build_query($postfields) : $postfields;curl_setopt($ch, CURLOPT_POSTFIELDS, $tmpdatastr);}break;default:curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求⽅式 */break;}$ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;curl_setopt($ch, CURLOPT_URL, $url);if($ssl){curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求不验证证书和hostscurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在}$response = curl_exec($ch);curl_close($ch);if(empty($response)){exit("错误请求");}return $response;}function isPostHasFile($value){if (is_string($value) && strpos($value, '@') === 0 && is_file(realpath(ltrim($value, '@')))) {return true;}return false;}也可以使⽤php内置的系统函数,如果使⽤过程中出现问题,建议查看是否启⽤相应的系统函数。

PHP上传文件方法及获取文件后缀名函数

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代码讲解

php代码讲解

PHP代码讲解一、什么是PHPPHP(全称:Hypertext Preprocessor,即超文本预处理器)是一种通用开源脚本语言,特别适用于Web开发。

它可以嵌入到HTML中,以动态生成内容。

PHP代码可以在服务器上执行,生成动态网页,并将其发送到客户端浏览器。

PHP还可以通过命令行运行,用于处理脚本任务。

二、PHP的基本语法2.1 变量PHP中的变量使用$符号作为前缀,可以存储各种类型的数据,如整数、浮点数、字符串、数组等。

变量在使用前不需要声明类型。

$age = 25;$name = "John Doe";$grades = [80, 90, 75, 85];2.2 控制结构PHP支持常见的控制结构,如条件语句、循环语句和跳转语句。

2.2.1 条件语句条件语句用于根据条件的真假执行不同的代码块。

if ($age > 18) {echo "You are an adult.";} elseif ($age > 12) {echo "You are a teenager.";} else {echo "You are a child.";}2.2.2 循环语句循环语句用于重复执行一段代码。

for ($i = 0; $i < 5; $i++) {echo $i;}while ($i < 10) {echo $i;$i++;}foreach ($grades as $grade) {echo $grade;}2.2.3 跳转语句跳转语句用于改变代码的执行流程。

break; // 终止当前循环continue; // 跳过本次循环迭代return; // 结束函数执行,并返回值2.3 函数函数是一段封装了特定功能的可重用代码块。

PHP提供了许多内置函数,也可以自定义函数。

function greet($name) {echo "Hello, " . $name . "!";}greet("John");三、PHP的高级特性3.1 面向对象编程PHP支持面向对象编程(OOP),可以使用类、对象、继承、封装等概念。

php处理ftp上传文件

php处理ftp上传文件

用php实现文件上传二法--------------------------------------------------------------------------------PHP(Hypertext Preprocessor)是一种HTML 内嵌式的语言(类似IIS 上的ASP)。

而PHP 独特的语法混合了C、Java、Perl 以及PHP 式的新语法。

它可以比CGI 或者Perl&nbsp;更快速的执行动态网页。

除此之外,用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代码)

⼀个完整的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"。

phpstorm连接远程服务器自动上传和拉取代码

phpstorm连接远程服务器自动上传和拉取代码

phpstorm连接远程服务器自动上传和拉取代码PHPStorm是一款功能强大的集成开发环境(IDE),可用于开发PHP等Web应用程序。

在使用PHPStorm时,我们经常需要连接远程服务器进行代码的上传和拉取。

本文将介绍如何在PHPStorm中实现自动上传和拉取代码的操作。

使用PHPStorm连接远程服务器的第一步是配置服务器设置。

首先,打开PHPStorm并导航到"File"菜单,选择"Settings"。

在弹出的设置窗口中,点击"Deployment"选项。

在"Deployment"选项中,点击"+"按钮以添加一个新的服务器配置。

在弹出的对话框中,输入服务器的名称,并选择"Connection"选项卡。

在"Connection"选项卡中,选择合适的访问协议(如FTP、SFTP 等)。

根据服务器提供商提供的信息,填写服务器、端口、用户名和密码等详细信息。

如果服务器对SSH密钥进行身份验证,请提供相应的密钥文件路径。

配置完服务器连接后,点击"Mapping"选项卡。

在此选项卡中,设置本地和远程路径之间的映射关系。

例如,将本地的项目文件夹与远程服务器的对应文件夹进行映射。

配置完服务器设置后,点击"OK"保存配置。

现在,我们可以使用PHPStorm连接到远程服务器并进行代码的上传和拉取操作了。

在PHPStorm中,可以通过多种方式进行代码上传和拉取。

以下是几种常用的方式:1. 通过工具栏按钮进行操作:在PHPStorm的工具栏中,有一些快捷按钮,可用于实现代码上传和拉取。

其中,上传按钮通常显示为向服务器传输的箭头图标,拉取按钮则显示为从服务器拉取的箭头图标。

点击相应的按钮,PHPStorm将自动执行操作。

2. 使用右键菜单进行操作:在文件管理器中选择要上传或拉取的文件或文件夹,然后使用鼠标右键点击选中项。

PHP实现的多文件上传类及用法示例

PHP实现的多文件上传类及用法示例

PHP实现的多⽂件上传类及⽤法⽰例这篇⽂章主要介绍了PHP实现的多⽂件上传类及⽤法,详细分析了php实现的多⽂件上传类与具体的使⽤技巧,需要的朋友可以参考下1、upFiles.css.php ⽂件<?phpclass UploadFiles{private $maxsize = '1000000'; //允许上传⽂件最⼤长度private $allowtype = array('jpg','png','gif','jpeg');//允许上传⽂件类型private $israndfile = true;//是否随机⽂件名private $filepath;//上传路径private $originName;//上传的源⽂件private $tmpfileName;//临时⽂件名private $newfileName;//新⽂件名private $fileSize;//⽂件⼤⼩private $fileType;//⽂件类型private $errorNum = 0;//错误号private $errorMessg = array();//错误消息//对成员初始化function __construct($options = array()){foreach($options as $key=>$val){$key = strtolower($key);//查看传进来的数组⾥下标是否与成员属性相同//print_r(array_keys(get_class_vars(get_class($this))));if(!in_array($key,array_keys(get_class_vars(get_class($this))))){continue;}else{$this->setOption($key,$val);}}}private function setOption($key,$val){$this->$key = $val;//echo $this->errorNum."<br>";}//检查⽂件上传路径private function checkfilePath(){//echo $this->filepath;if(empty($this->filepath)){$this->setOption('errorNum',"-5");return false;}if(!file_exists($this->filepath) || !is_writable($this->filepath)){if(!@mkdir($this->filepath,0755)){$this->setOption('errorNum','-4');return false;}}return true;}//获取错误信息private function getError(){$str = "上传⽂件{$this->originName}出错---";switch($this->errorNum){case 4; $str .= "没有⽂件被上传";break;case 3; $str .= "⽂件只被部分上传";break;case 2; $str .= "超过⽂件表单允许⼤⼩";break;case 1; $str .= "超过php.ini中允许⼤⼩";break;case -1; $str .= "未允许的类型";break;case -2; $str .= "⽂件过⼤,不能超过".$this->maxsize."个字节";break;case -3; $str .= "上传失败";break;case -4; $str .= "建⽴⽂件上传⽬录失败";break;case -5; $str .= "必须指定上传路径";break;default; $str .= "未知错误";}return $str."<br>";}//检查⽂件类型private function checkfileType(){//echo $this->fileType;if(!in_array(strtolower($this->fileType),$this->allowtype)){$this->setOption('errorNum','-1');return false;}else{return true;}}//检查⽂件⼤⼩private function checkfileSize(){if($this->fileSize > $this->maxsize){$this->setOption('errorNum','-2');return false;}else{return true;}}//处理随机⽂件名称private function prorandFile(){$ch = $this->israndfile;if($ch == 'true'){return true;}else{return false;}}//private function setFiles($name="",$tmp_name="",$size="",$error=""){ //检查上传路径if(!$this->checkfilePath()){//$this->errorMessg = $this->getError();return false;}//echo $error."<br>";if($error){$this->setOption('errorNum',$error);return false;}$arrstr = explode('.',$name);$type = end($arrstr);$this->setOption('originName',$name);$this->setOption('fileSize',$size);$this->setOption('fileType',$type);$this->setOption('tmpfileName',$tmp_name);return true;}//检查是否有⽂件上传function checkFile($formname){if(!@$_FILES[$formname]){$this->setOption('errorNum',4);return false;}else{return true;}}//上传⽂件function uploadeFile($formname){if(!$this->checkFile($formname)){$this->errorMessg = $this->getError();return false;}$return = true;$name = @$_FILES[$formname]['name'];$tmp_name = @$_FILES[$formname]['tmp_name'];$size = @$_FILES[$formname]['size'];$error = @$_FILES[$formname]['error'];//$type = $_FILES[$formname]['type'];if(is_array($name)){$errors = array();for($i=0; $i<count($name); $i++){if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){if(!$this->checkfileSize() || !$this->checkfileType()){$errors[] = $this->getError();$return = false;}}else{$errors[] = $this->getError();$return = false;}if(!$return) $this->setFiles();}if($return){$newfileN = array();for($i=0; $i<count($name); $i++){if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){if(!$this->copyFile()){$errors[] = $this->getError();$return = false;}else{$newfileN[] = $this->newfileName;}}$this->newfileName = $newfileN;}}//print_r($errors);$this->errorMessg = $errors;//echo $errors;return $return;}else{if($this->setFiles($name,$tmp_name,$size,$error)){$return = true;if($error) var_dump($error);if($this->checkfileSize() && $this->checkfileType()){}else{$return = false;}}else{$return = false;}if(!$return){$this->errorMessg = $this->getError();}return $return;}}//获取上传后的⽂件名function getnewFile(){return $this->newfileName;}//把⽂件拷贝到指定的路径function copyFile(){$filepath = rtrim($this->filepath,'/')."/";if(!$this->errorNum){if($this->prorandFile()){$this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType;}else{$this->newfileName = $this->originName;}if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){$this->setOption('errorNum',-3);return false;}else{return true;}}else{return false;}}//上传错误后返回的消息function gteerror(){$err = $this->errorMessg;return $err;}}>2、使⽤⽅法uploade.php ⽂件:<?php//print_r($_FILES['spic']);header('Content-Type:text/html;charset=utf-8');//if(@$_FILES['spic'])echo "ddddddddd";;include('upFiles.css.php');$upfile = new UploadFiles(array('filepath'=>'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000')); if($upfile ->uploadeFile('spic')){$arrfile = $upfile ->getnewFile();foreach($arrfile as $v){echo $v,"<br/>";}echo "上传成功!";}else{$err = $upfile ->gteerror();if(is_array($err)){foreach($err as $v1){echo $v1,"<br/>";}}else{echo $err;}//var_dump($err);}//var_dump($upfile);>HTML ⽂件:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>⽆标题⽂档</title><script type="text/javascript">function Check(){//alert('dddd');for(i=1; i<9; i++){if(document.getElementById('v'+i).value == ''){document.getElementById('v'+i).name = 'uu';}}}</script></head><body><form name="upfile" action="uploade.php" method="post" enctype="multipart/form-data"> <input type="file" name="spic[]" id="v1" /><br/><input type="file" name="spic[]" id="v2" /><br/><input type="file" name="spic[]" id="v3" /><br/><input type="file" name="spic[]" id="v4" /><br/><input type="file" name="spic[]" id="v5" /><br/><input type="file" name="spic[]" id="v6" /><br/><input type="file" name="spic[]" id="v7" /><br/><input type="file" name="spic[]" id="v8" /><br/><input type="submit" name="sub" value="提交" onclick="return Check()" /><input type="reset" name="res" value="重填" /></form></body></html>。

PHP图片批量上传代码-PHP技术-源码之家-源码学院

PHP图片批量上传代码-PHP技术-源码之家-源码学院

PHP图片批量上传代码-PHP技术-源码之家-源码学院PHP图片批量上传代码2010-08-02 14:09:23 来源:源码之家站长整理【大中小】浏览: 510 次<?php$zpass='123456'; //登陆密码$zurl=''; //使用地址$zname='upimage.php'; //本页面名称functionimageWaterMark($groundImage,$waterPos=0,$waterImage="", $waterText="",$textFont=5,$textColor="#FF0000"){$isWaterImage = FALSE;$formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。

";//读取水印文件if(!empty($waterImage) && file_exists($waterImage)){$isWaterImage = TRUE;$water_info = getimagesize($waterImage);$water_w = $water_info[0];//取得水印图片的宽$water_h = $water_info[1];//取得水印图片的高switch($water_info[2])//取得水印图片的格式{case 1:$water_im = imagecreatefromgif($waterImage);break;case 2:$water_im = imagecreatefromjpeg($waterImage);break;case 3:$water_im = imagecreatefrompng($waterImage);break;default:die($formatMsg);}}//读取背景图片if(!empty($groundImage) && file_exists($groundImage)){$ground_info = getimagesize($groundImage);$ground_w = $ground_info[0];//取得背景图片的宽$ground_h = $ground_info[1];//取得背景图片的高switch($ground_info[2])//取得背景图片的格式{case 1:$ground_im = imagecreatefromgif($groundImage);break;case 2:$ground_im = imagecreatefromjpeg($groundImage);break;case 3:$ground_im = imagecreatefrompng($groundImage);break;default:die($formatMsg);}}else{die("需要加水印的图片不存在!");}//水印位置if($isWaterImage)//图片水印{$w = $water_w;$h = $water_h;$label = "图片的";}else//文字水印{$temp = imagettfbbox(ceil($textFont*2.5),0,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围$w = $temp[2] - $temp[6];$h = $temp[3] - $temp[7];unset($temp);$label = "文字区域";}if( ($ground_w<$w) || ($ground_h<$h) ){echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!";return;}switch($waterPos){case 0://随机$posX = rand(0,($ground_w - $w));$posY = rand(0,($ground_h - $h));break;case 1://1为顶端居左$posX = 0;$posY = 0;break;case 2://2为顶端居中$posX = ($ground_w - $w) / 2; $posY = 0;break;case 3://3为顶端居右$posX = $ground_w - $w; $posY = 0;break;case 4://4为中部居左$posX = 0;$posY = ($ground_h - $h) / 2; break;case 5://5为中部居中$posX = ($ground_w - $w) / 2; $posY = ($ground_h - $h) / 2; break;case 6://6为中部居右$posX = $ground_w - $w; $posY = ($ground_h - $h) / 2; break;case 7://7为底端居左$posX = 0;$posY = $ground_h - $h; break;case 8://8为底端居中$posX = ($ground_w - $w) / 2;$posY = $ground_h - $h;break;case 9://9为底端居右$posX = $ground_w - $w-6;$posY = $ground_h - $h-6;break;default://随机$posX = rand(0,($ground_w - $w));$posY = rand(0,($ground_h - $h));break;}//设定图像的混色模式imagealphablending($ground_im, true);if($isWaterImage)//图片水印{imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w,$water_h);//拷贝水印到目标文件}else//文字水印{if( !empty($textColor) && (strlen($textColor)==7) ){$R = hexdec(substr($textColor,1,2));$G = hexdec(substr($textColor,3,2));$B = hexdec(substr($textColor,5));}else{die("水印文字颜色格式不正确!");}imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));}//生成水印后的图片@unlink($groundImage);switch($ground_info[2])//取得背景图片的格式{case 1:imagegif($ground_im,$groundImage);break;case 2:imagejpeg($ground_im,$groundImage);break;case 3:imagepng($ground_im,$groundImage);break;default:die($errorMsg);}//释放内存if(isset($water_info)) unset($water_info);if(isset($water_im)) imagedestroy($water_im);unset($ground_info);imagedestroy($ground_im);}><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>图片上传</title><style type="text/css"><!--body, table {font-family: "宋体";font-size: 14px;padding:0px;margin:0px;}--></style></head><body><table width="760" border="0" align="center"><tr><td><?php//当前时间$nowtime=time();$baseurl= $_SERVER['PHP_SELF'] ? dirname($_SERVER['PHP_SELF']) : dirname($_SERVER['SCRIPT_NAME']);$baseurl='http://'.$_SERVER['HTTP_HOST'].$baseurl;//检查是否有提交图片if(!empty($_FILES['attachfile']['name'])){//处理每个图片foreach($_FILES['attachfile']['name'] as $k=>$v){//图片名字不为空if(!empty($v)){//后缀必须是图片名if(eregi("\.(gif|jpg|jpeg|png|bmp)$",$v)){//图片不能大于8Mif($_FILES['attachfile']['size'][$k] > 8388608) jieqi_delfile($_FILES['attachfile']['tmp_name'][$k]);else{//解析图片后缀$tmpary=explode('.', $v);$postfix=$tmpary[count($tmpary)-1];$attachdir = date('Ym',$nowtime);if (!file_exists($attachdir)) jieqi_createdir($attachdir);$attachdir .= '/'.date('d',$nowtime);if (!file_exists($attachdir)) jieqi_createdir($attachdir);$runtime = explode(' ', microtime());$attachname=$attachdir.'/'.date('His',$nowtime).round($run time[0]*1000).$k.'.'.$postfix;@move_uploaded_file($_FILES['attachfile']['tmp_name'][$k], $attachname);@chmod($attachname, 0644);$url=jieqi_htmlstr($baseurl.'/'.$attachname);//打水印if ($_REQUEST["water"]) {$pic=$attachname;$wpic="xhxsw.gif";$info=getimagesize($pic);$w=$info[0];$h=$info[1];if ($h>140) {imageWaterMark($pic,1,"xhxsw.gif");}if ($h>400) {imageWaterMark($pic,7,"xhxsw.gif");}if ($h>1600) {imageWaterMark($pic,4,"xhxsw.gif");}}echo '<a href="'.$url.'" target="_blank">'.$url.'</a>';><span title="复制图片URL到剪贴板" onclick="setcopy('<?echo $url?>', '图片地址已经复制到剪贴板')">[复制]</span><br><? }}else{jieqi_delfile($_FILES['attachfile']['tmp_name'][$k]);}}}}function jieqi_htmlstr($str, $quote_style=ENT_QUOTES){$str = htmlspecialchars($str, $quote_style);$str = nl2br($str);$str = str_replace(" ", " ", $str);return $str;}// 读文件function jieqi_readfile($file_name){if (function_exists("file_get_contents")) {return file_get_contents($file_name);}else{$filenum = @fopen($file_name, "rb");@flock($filenum, LOCK_SH);$file_data = @fread($filenum, @filesize($file_name));@flock($filenum, LOCK_UN);@fclose($filenum);return $file_data;}}//写文件function jieqi_writefile($file_name, &$data, $method = "wb"){$filenum = @fopen($file_name, $method);if(!$filenum) return false;@flock($filenum, LOCK_EX);$ret = @fwrite($filenum, $data);@flock($filenum, LOCK_UN);@fclose($filenum);@chmod($file_name, 0777);return $ret;}//删除文件function jieqi_delfile($file_name){return unlink($file_name);}// 删除目录function jieqi_delfolder($dirname, $flag = true){$handle = @opendir($dirname);while ($file = @readdir($handle)) {if($file != '.' && $file != '..'){if (is_dir($dirname . DIRECTORY_SEPARATOR . $file)){jieqi_delfolder($dirname . DIRECTORY_SEPARATOR . $file, true);}else{@unlink($dirname . DIRECTORY_SEPARATOR . $file);}}}@closedir($handle);if ($flag) @rmdir($dirname);}//建立目录function jieqi_createdir($dirname, $mode=0777, $recursive = false){if (version_compare(PHP_VERSION, '5.0.0', '>=')) {return mkdir($dirname, $mode, $recursive);}if (!$recursive) {$ret=mkdir($dirname, $mode);if($ret) chmod($dirname, $mode);return $ret;}return is_dir($dirname) or (jieqi_createdir(dirname($dirname), $mode, true) and mkdir($dirname, $mode));}//检查目录是否存在,不存在尝试自动建立function jieqi_checkdir($dirname, $autocreate=0){if(is_dir($dirname)){return true;}else{if(empty($autocreate)) return false;else return jieqi_createdir($dirname);}}></td></tr></table><?if ($_GET[z]=$zpass){?><table width="760" border="0" align="center"><tr><td colspan="2" align="right"><form action="<?echo $zname?>" ><input type="submit" name="quit" value=" 退出"></form></td></tr></table><form name="frmupload" method="post" action="<?echo $zname?>?z=<?echo $zpass?>" enctype="multipart/form-data"> <table width="760" border="1" align="center"><tr><td colspan="2" align="center">图片批量上传程序</td></tr><td width="114">图片一:</td><td width="470"><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片二:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片三:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片四:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片五:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片六:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><td>图片七:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片八:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片九:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><td>图片十:</td><td><input type='file' class='text' size='60' name='attachfile[]' id='attachfile[]' /></td></tr><tr><input name="water" type="hidden" id="water" value="0" checked ></tr><tr><td> </td><td width=600><input type="submit" name="Submit" value=" 提交 "></form></td></tr></table><table width="760" border="0" align="center"><tr><td><?phpif(!empty($_REQUEST['delurl'])){foreach($_REQUEST['delurl'] as $v){if(empty($v)) continue;if(!eregi("\.(gif|jpg|jpeg|png|bmp)$",$v)){echo '<font color="red">您提交的不是图片地址:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';}elseif(strpos($v,$baseurl) !== 0){echo '<font color="red">您提交的图片地址错误:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';}else{$delpath=str_replace($baseurl,'.',$v);if(!file_exists($delpath)){echo '<font color="red">图片不存在:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';}else{$ret=jieqi_delfile($delpath);if($ret) echo '<font color="blue">删除完成:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';else echo '<font color="red">删除失败,可能权限不对:</font><a href="'.urlencode($v).'" target="_blank">'.$v.'</a><br>';}}}}></td></tr></table><script type="text/java script">function setcopy(text, alertmsg){clipboardData.setData('Text', text);alert(alertmsg);}</script><?php$b=0;$dir = './../uppic';echo "<center>已经上传的图片如下:\n<div style='width:830px'>";function view_dir($directory){$handle = opendir( $directory );while ( $file = readdir($handle) ){$bdir = $directory . '/' .$file ;if ($file <> '.' && $file <> '..' && $file <> 'Thumbs.db' && $file <> $zname && is_dir($bdir)){view_dir( $directory .'/'. $file);}else if( $file <> '.' && $file <> '..' && $file <> 'Thumbs.db' && $file <> $zname){$a = $file ;><div style='float:left;width:180px;' id=<?echo $b?> name=<?echo $b?>><a href='<?echo $directory?>/<?echo $a?>' target=_blank><?echo $a?></a><span title="复制图片URL到剪贴板" onclick="setcopy('http://<?echo $zurl?>/1/2/.<?echo $directory?>/<?echo $a?>', '图片地址已经复制到剪贴板')">[复制]</span></div><? $b=$b+1;}}closedir( $handle );}view_dir($dir);><form name="frmdelete" action="<?echo $zname?>?z=<?echo $zpass?>" method="post"><table width="760" border="1" align="center"cellpadding="3"><tr><td colspan="2" align="center">删除图片</td></tr><tr><td width="114">图片网址一:</td><td width="470"><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址二:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址三:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址四:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址五:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址六:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址七:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址八:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址九:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td>图片网址十:</td><td><input name="delurl[]" id="delurl[]" type="text" size="60"></td></tr><tr><td></td><td><input type="submit" name="Submit2" value=" 删除"></td></tr></table></form><?}else{?><br><br><br><center>请输入密码:<form action="<?echo $zname?>" method="get"><input type=password name=z size=12><input type=submit value=" 提交 "></form><?}?></body></html>。

http上传文件原理

http上传文件原理

http上传文件原理
HTTP上传文件是通过POST请求实现的。

在HTTP请求中,
请求头部包含了请求方法、路径和协议等信息,而请求体中保存了需要传输的数据。

当需要上传文件时,请求体中的数据被组织为multipart/form-data形式。

这种格式可以同时传输文本数据和二进制数据。


个文件被封装成一个独立的"part",每个part包含了文件的相
关信息,如文件名、文件类型等,并以固定的格式进行传输。

在客户端发起上传请求时,首先会创建一个multipart/form-
data类型的请求体,并将需要上传的文件以part的形式添加到请求体中。

然后,客户端将请求体与请求头部一起发送到服务器。

服务器接收到请求后,首先会解析请求头部,获取到请求方法、路径等信息。

然后,服务器解析请求体,逐个解析每个part,
获取到文件的相关信息。

最后,服务器根据文件的相关信息,将文件内容保存到指定的路径中。

在文件上传过程中,可能会涉及到文件分片上传、进度监控、断点续传等功能。

这些功能可以通过在请求头部添加自定义的字段或在请求体中添加额外的信息来实现。

总的来说,HTTP上传文件的原理就是将文件数据封装成multipart/form-data格式,在请求体中发送给服务器,服务器
解析请求体,获取文件数据并进行保存。

通过这种方式,可以实现在Web应用中方便地上传文件。

PHP响应post请求上传文件的方法

PHP响应post请求上传文件的方法
}
希望本文所述对大家PHP程序设计有所帮助。

这篇文章主要介绍了php的xml文件解释类及其应用实例包括针对xml文件的读取解释检查及输出等功能非常实用需要的朋友可以参考下
PHP响应 post请求上传文件的方法
本文实例讲述了PHP响应post请求上传文件的方法。分享给大家供大家参考,具体如下:
function send_file($url, $post = '', $file = '') { $eol = "\r\n"; $mime_boundary = md5 ( time () ); $data = ''; $confirmation = ''; date_default_timezone_set ( "Asia/Shanghai" ); $time = date ( "Y-m-d H:i:s " ); $post ["filename"] = $file [filename]; foreach ( $post as $key => $value ) { $data .= '--' . $mime_boundary . $eol; $data .= 'Content-Disposition: form-data; '; $data .= "name=" . $key . $eol . $eol; $data .= $value . $eol; } $data .= '--' . $mime_boundary . $eol; $data .= 'Content-Disposition: form-data; name=' . $file [name] . '; filename=' . $file [filename] . $eol; $data .= 'Content-Type: text/plain' . $eol; $data .= 'Content-Transfer-Encoding: binary' . $eol . $eol; $data .= $file [filedata] . $eol; $data .= "--" . $mime_boundary . "--" . $eol . $eol; $params = array ('http' => array ('method' => 'POST', 'header' => 'Content-Type: multipart/form-data;boundary=' . $mime_boundary . $eol, 'content' => $data ) ); $ctx = stream_context_create ( $params ); $response = file_get_contents ( $url, FILE_TEXT, $ctx ); return $response;

PHPmove_uploaded_file()函数(将上传的文件移动到新位置)

PHPmove_uploaded_file()函数(将上传的文件移动到新位置)

PHPmove_uploaded_file()函数(将上传的⽂件移动到新位置)定义和⽤法move_uploaded_file()函数将上传的⽂件移动到新位置。

若成功,则返回 true,否则返回 false。

语法move_uploaded_file(file,newloc)参数描述file必需。

规定要移动的⽂件。

newloc必需。

规定⽂件的新位置。

说明本函数检查并确保由 file 指定的⽂件是合法的上传⽂件(即通过 PHP 的 HTTP POST 上传机制所上传的)。

如果⽂件合法,则将其移动为由 newloc 指定的⽂件。

如果 file 不是合法的上传⽂件,不会出现任何操作,move_uploaded_file() 将返回 false。

如果 file 是合法的上传⽂件,但出于某些原因⽆法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出⼀条警告。

这种检查显得格外重要,如果上传的⽂件有可能会造成对⽤户或本系统的其他⽤户显⽰其内容的话。

提⽰和注释注释:本函数仅⽤于通过 HTTP POST 上传的⽂件。

注意:如果⽬标⽂件已经存在,将会被覆盖。

安全补充来⾃w3c的介绍,下⾯说说我遇到的问题。

⼀般来说,我们都会这样写保存⽂件:$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name'];move_uploaded_file($_FILES['file']['tmp_name'],$fileName )先解释,这两句代码的含义:直接保存⽂件,同时⽂件名也为⽤户上传的⽂件名好了,这下⼦风险来了:①直接保存⽂件。

这意味着不对⽂件进⾏任何识别,如果有⽤户上传了⼀段后台代码保存为jpg后缀或者其他,要是管理员⼀不注意将其以php 映射,然后访问这个后台,- -结果可想⽽知,要是他在后台中执⾏删除所有数据库,整个⽹站直接GG。

php文章发布操作示例

php文章发布操作示例

php⽂章发布操作⽰例这⾥给出⼀个⽂章发布操作的⽰例,该⽰例虽然没有多⼤的实⽤价值,但涉及了php的字符串处理函数和正则表达式的应⽤,希望读者通过该实例的应⽤可以灵活地操作字符串。

为了简化程序和认知上的⽅便,这⾥只给出了两个主⽂件。

viewthread.php⽂件:<!DOCTYPE html><html><head><title>⽂章发布操作⽰例</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="./library/bootstrap.min.css"><script src="./library/jquery.min.js"></script><script src="./library/popper.min.js"></script><script src="./library/bootstrap.min.js"></script><style>.article-box{float: left;width:100%;height:400px;background-color:#dcdcdc;margin:20px 0px;border-radius:5px;border: solid 1px #789;padding:3px}</style></head><body><div class="container"><form method="post" action="viewthread.php" target="_ blank"><h2 align="center">发表⽂章演⽰</h2><!-- 下⾯定义⼀组选项,使⽤样式表将其输⼊在左边 --><div style="width:200; float:left"><h5>选项</h5><div class="form-check"><label class="form-check-label"><input type= "checkbox" name="parse[]" value="1" class="form-check-input"/>删除HTML标签</label></div><div class="form-check"><label class="form-check-label"><input type="checkbox" name="parse[]" value="2" class="form-check-input"/>转换HTM标签为实体</label></div><div class="form-check"><label class="form-check-label"><input type= "checkbox" name="parse[]" value="3" class="form-check-input" checked />使⽤UBB代码</label></div><div class="form-check"><label class="form-check-label"><input type= "checkbox" name="parse[]" value="4" class="form-check-input"/>开启URL识别</label></div><div class="form-check" title="可⽤的表情::),/wc, 微笑】【:@, /fn, 发怒】【:kiss, /kill, /sa, ⽰爱】【:p, /tx, 偷笑】【:q, /dk, ⼤哭】"><label class="form-check-label"><input type= "checkbox" name="parse[]" value="5" class="form-check-input" checked>使⽤表情</label></div><div class="form-check"><label class="form-check-label"><input type="checkbox" name="parse[]" value="6" class="form-check-input"/>禁⽤⾮法关键字</label></div><div class="form-check"><label class="form-check-label"><input type="checkbox" name="parse[]" value="7" class="form-check-input"/>PHP代码设为⾼亮</label></div><div class="form-check"><label class="form-check-label"><input type="checkbox" name="parse[]" value="8" class="form-check-input"/>原样显⽰</label></div><div class="form-check"><label class="form-check-label"><input type="checkbox" name="parse[]" value="9" class="form-check-input"/>同步换⾏</label></div></div><!-- 下⾯定义⽂章标题和⽂章内容的输⼊框,使⽤样式表取消换⾏,在右边显⽰--><div style="width:300; float: left"><h5>标题</h5><input type= "text" name= "subject" id="subject" class="form-control"><h5>内容</h5><textarea rows="7" cols="50" name="message" id="message" class="form-control"></textarea><input type="submit" name="replysubmit" value="发表帖⼦" class="btn btn-primary"></div></form><?php/**file: viewthread.php⽂章处理脚本*///包含脚本⽂件acticle.class.php,将⽂章类导⼊该⽂件require "article.class.php";//创建⼀个⽂章对象,在构造⽅法中传⼊⽂章的标题、⽂章的主体内容及⽤户的操作选项$article = new Acticle($_POST["subject"], $_POST ["message"], $_POST["parse"]) ;//调⽤⽂章对象中的获取标题⽅法,输出⽂章的标题$subject = $article->getSubject();//调⽤⽂章对象中的获取内容⽅法,输出⽂章的内容$message = $article->getMessage();//⽤界定符输出HTML代码,界定符类似双引号,可以输出变量echo <<<EOF<div class="article-box">{$subject}<hr />{$message}</div>EOF;><div><script>//向输⼊框写⼊预定内容$(document).ready(function(){//向标题框写⼊内容$("#subject").val("这是标题内容");//向内容框写⼊内容,因为内容太长,⽤数组切断后连接var content = ['[b]美⼥图⽚:[/b]','[img width="100%"]./img/a.jpg[/img]<br>','这是emoji表情 :) /wx 微笑⼤笑'].join("");$("#message").val(content);});</script></body></html>上⾯引⽤的bootstrap前端框架可引⽤公⽹上CDN的:<link rel="stylesheet" href="https:///twitter-bootstrap/4.1.0/css/bootstrap.min.css"><script src="https:///jquery/3.2.1/jquery.min.js"></script><script src="https:///popper.js/1.12.5/umd/popper.min.js"></script><script src="https:///twitter-bootstrap/4.1.0/js/bootstrap.min.js"></script>article.class.php⽂件:<?php/*file: article class. php声的⼀个⽂章类,其中有两个成员属性标题和内容,如果需要还可以更多*/class Acticle{private$subject; //⽂章的标题成员属private$message; //⽂章的主本内容成员属性//构造⽅法,通过传⼊⽂章标题和⽂章主体和⽂章的操作选项数组创建⽂章对象function __construct($subject="", $message="", $parse=array()){$this->subject = $this->html2Text($subject); //为⽂章标题赋初值,将HTML标记转为实体if(!empty ($parse)){ //如果⽤户选择了对⽂章的操作选项则条件成功foreach( $parse as$value){ //⽤户选择了⼏个⽂章操作选项则循环⼏次switch($value){ //根据⽤户选择的不同选项,调⽤不同的内部⽅法处理case 1: //如果⽤户选择“删除HTML标签”选项时条件成⽴$message = $this->delHtmlTags($message); break;case 2: //如果递择“转换HTML标签为实体”选项时条件成⽴$message = $this->html2Text($message); break;case 3; //如果⽤户选择“使⽤UBB代码”选项时条件成⽴$message = $this->UBBCode2Html ($message); break;case 4; //如果⽤户选择“开启URL识别”选项时条件成⽴$message = $this->parseURL($message); break;case 5: //如果⽤户选择“使⽤表情”选项时条件成⽴$message = $this->parseSmilies($message); break;case 6: //如果⽤户选择“禁⽤⾮法关键字”选项时条件成⽴$message = $this->disableKeyWords ($message); break;case 7: //如果⽤户选择“PHP代码设为⾼亮”选项时条件成⽴$message = $this->prasePHPCode($message); break;case 8: //如果⽤户选择“原样显⽰”选项时条件成⽴$message = $this->praseper($message); break;case 9: //如果⽤户选择同步换⾏选项时亲件成⽴$message = $this->nltobr($message); break;}}}$this->message=$message; //给成员属性$message初值}//此私有⽅法⽤来删除HTML标记private function delHtmlTags($message){return strip_tags($message); //调⽤字符串处理函数删除HTML标记}//此私有⽅法⽤来将HTML标记转为HTML实体private function html2Text($message){return htmlspecialchars(stripslashes($message)); //调⽤字符串处程函数进⾏作}//此私有⽅法有来解析UBB代码private function UBBCode2Html($message){//声明正则表达式的模板数组$pattern=array('/\[b\]/i', '/\[\/b\]/i', '/\[i\]/i','/\[\/i\]/i', '/\[u\]/i', '/\[\/u\]/i','/\[font=([^\[\<]+?)\]/i','/\[color=([#\w]+?)\]/i','/\[size=(\d+?)\]/i','/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i','/\[align=(left|center|right)\]/i','/\[url=www.([^\["\']+?)\](.+?)\[\/url\]/is','/\[url=(https?|ftp|gopher|news|telnet){1}:\/\/([^\["\']+?)\](.+?)\[\/url\]/is','/\[email\]\s*([a-z0-9\-_.+]+)@([a-z0-9\-_.]+[.][a-z0-9-_.]+)\s*\[\/email\]/i','/\[email=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\](.+?)\[\/email\]/is','/\[img([^\[\]]*)\](.+?)\[\/img\]/','/\[\/color\]/i', '/\[\/size\]/i', '/\[\/font\]/i', '/\[\/align\]/');//声明正则表达式的替换数组$replace = array('<b>', '</b>', '<i>','</i>', '<u>', '</u>','<font face="\\1">','<font color="\\1">','<font size="\\1">','<font style=\"font-size:\\1\">','<p align="\\1">','<a href="http://www.\\1" target="_blank">\\2</a>','<a href="\\1: //\\2" target="_blank">\\3</a>','<a href="mailto:\\1@\\2">\\1@\\2</a>','<a href="mailto:\\1@\\2">\\3</a>','<img\\1 src="\\2">','</font>', '</font>', '</font>', '</p>');//调⽤正则表达式的替换函数return preg_replace($pattern, $replace, $message);}//此私有⽅法⽤来剪切长的URL,并加上链接private function cuturl($url){$length = 65;$urllink = "<a href=\"" . (substr(strtolower($url), 0, 4) == 'www.' ? "http://{$url}" : $url) . '" target="_blank">';//如果UR长度⼤于65则剪切if(strlen($url) > $length){$url = substr($url, 0, intval($length * 0.5)) . '...' . substr($url, -intval($length * 0.3));}$urllink .= $url . '</a>';return$urllink;}//此私有⽅法⽤来解析URL,将其加上链接private function parseURL($message) {$urlPattern = "/(www.|https?:\/\/|ftp:\/\/|news:\/\/|telnet:\/\/){1}([^\[\"']+?)(com|cn|net|org)(\/[\w-\.\/\?\%\&\=]*)?/i";//return preg_replace($urIPattern, "\$this->cuturI('\\1\\2\\3\\4')", $message);return preg_replace_callback($urlPattern, function($r){return$this->cuturl("{$r[1] }{$r[2]}{$r[3]}{$r[4]}") ;}, $message);}//此⽅法⽤来解析表情private function parseSmilies ($message) {$pattern = array('/:\)|\/wx|微笑/i','/:D|\/dx|⼤笑/i','/:@|\/fn|发怒/i','/:kiss|\/kill\/sa|⽰爱/','/:p|\/tx|偷笑/i','/:q|\/dk|⼤哭/i');$replace = array('<img src="smilies/smile.png" alt="微笑" width="30px">','<img src="smilies/laugh.png" alt="⼤笑" width="30px">','<img src="smilies/huffy.png" alt="发怒" width="30px">','<img src="smilies/kiss.png" alt="⽰爱" width="30px">','<img src="smilies/titter.png" alt="偷笑" width="30px">','<img src="smilies/cry.png" alt="⼤哭" width="30px">') ;return preg_replace($pattern, $replace, $message);}//此⽅法⽤来屏蔽⽂章中的⾮法关键字private function disableKeyWords ($message) {$keywords_disable = array("⾮法关键字⼀", "⾮法关键宇⼆", "⾮法关键字三");return str_replace($keywords_disable, "**", $message);}//此⽅法⽤来将PHP代码设置为⾼亮private function prasePHPCode ($message){$pattern = '/(<\?.*?\?>)/is';return preg_replace_callback($pattern, function($r) {return '<pre style="background: #ddd">' . highlight_string($r[1] , true) . '</pre>';}, $message);}//此⽅法⽤来将⽂章原样输出,即加上<pre>标记private function prasePer($message) {return '<pre>' . $message . '</pre>' ;}//此私有⽅法⽤来将换⾏符号转为<br>标记private function nltobr($message) {return nl2br($message);}//此⽅法为公有的,返回⽂章的标题public function getSubject() {return '<h1 align=center>' . $this->subject . '</h1>';}//此⽅法为公有的,返回⽂章的主体内容public function getMessage() {return$this->message;}}⽰例效果:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最近为了象牙,有点不务正业的嫌疑,经过最近一段时间的疯狂灌水终于拿到了象牙,嘿嘿,今天重出江湖,想到论坛似乎没什么为新手讲的上传实例,而这部分是很常用的,故今天献丑为各位新鸟详细讲解下怎样实现文件上传。

用过ASP的都知道,ASP的上传要么购买官方的组件实现,要么就编写复杂的上传类,是相当麻烦的,这里不免要宣传下PHP,PHP使上传变的非常容易且这一切都是免费的,怎么样,你心动了没有?心动不如行动(好土的台词- _ -!),赶紧跟我来吧~~~,另外说一句,斑竹如果觉得我写的好,可要给我加精哦!!^_^ 首先来看下上传部分的表单代码:CODE:<form method="post" action="upload.php" enctype="multipart/form-data"><table border=0 cellspacing=0 cellpadding=0 align=center width="100%"><tr><td width=55 height=20 align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000">文件: </TD> <td height="16"><input name="file" type="file" value="浏览" ><input type="submit" value="上传" name="B1"></td></tr></table></form>这里有几个要注意的地方,首先看这句<form method="post" action="upload.php" enctype="multipart/form-data">,这里我们采用POST方法,个别浏览器还支持PUT方法,当然这需要对脚本进行修改,我并不建议这么做。

表单中必须设置enctype="multipart/form-data,这样,服务器就知道上传文件带有常规表单信息,记住,这个是必须设置的。

此外还需要一个隐藏域来限制上传文件的最大长度:<input type="hidden" name="MAX_FILE_SIZE" value="2000000">,这里name必须设置成MAX_FILE_SIZE,其值就是上传文件的最大长度,单位是B,这里我限制成2M。

再看这句:<input name="file" type="file" value="浏览" >,type="file"说明了文件类型,这样一个基本的上传文件接口就完成了,接下来讲讲如何用PHP来处理上传的文件,此外你的php.ini中设置的上传文件最大长度可能会影响到你的实际上传,请根据实际情况修改,另PHP的上传是先传到临时目录,在移至指定目录的,了;临时目录的可根据需要修改,也可使用默认值。

好的,表单提交upload.php,来看看这个页面都有什么:[php]<?php/*****************************************Title :文件上传详解Author:leehui1983(辉老大)Finish Date :2006-12-28*****************************************/$uploaddir = "./files/";//设置文件保存目录注意包含/$type=array("jpg","gif","bmp","jpeg","png");//设置允许上传文件的类型$patch="http://127.0.0.1/cr_downloadphp/upload/files/";//程序所在路径//获取文件后缀名函数function fileext($filename){return substr(strrchr($filename, '.'), 1);}//生成随机文件名函数function random($length){$hash = 'CR-';$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';$max = strlen($chars) - 1;mt_srand((double)microtime() * 1000000);for($i = 0; $i < $length; $i++){$hash .= $chars[mt_rand(0, $max)];}return $hash;}$a=strtolower(fileext($_FILES['file']['name']));//判断文件类型if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type)){$text=implode(",",$type);echo "您只能上传以下类型文件: ",$text,"<br>";}//生成目标文件的文件名else{$filename=explode(".",$_FILES['file']['name']);do{$filename[0]=random(10); //设置随机数长度$name=implode(".",$filename);//$name1=$name.".Mcncc";$uploadfile=$uploaddir.$name;}while(file_exists($uploadfile));if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){if(is_uploaded_file($_FILES['file']['tmp_name']){//输出图片预览echo "<center>您的文件已经上传完毕上传图片预览: </center><br><center><img src='$uploadfile'></center>";echo"<br><center><a href='javascrīpt:history.go(-1)'>继续上传</a></center>";}else{echo "上传失败!";}}}?>[/php]刚看这些你可能有点晕~~,不过不要紧,听我讲完,你就会发现其实这玩意SO EASY!!首先我讲下原理,该程序以上传图片为例,先判断文件类型是否为图片格式,若是则上传文件,以随机数和时间的组合重新命名文件(避免上传文件重名,这样做很有必要!),接着上传文件到指定目录,成功上传则输出上传的图片预览。

这里要对程序中一些函数作些解释。

先看return substr(strrchr($filename, '.'), 1), strrchar()函数有什么作用呢,我举个例子大家就知道,比如一个图片文件pic.jpg,我们用strrchr处理,strrchr(pic.jpg,'.'),它将返回.jpg,明白了吗?该函数返回指定字符在该字符串最后出现的位置后的字符。

配合 substr() 我们就可以取到jpg,这样我们就得到了文件的后缀名,来判断上传文件是否符合指定格式。

本程序把指定的格式放在一个数组中,实际使用时可根据需要添加。

接下来看产生随机数文件名部分,我们看到mt_srand()这个函数,手册上叫他“播下一个更好的随机数发生器种子”,其实就是初始化一个随机数的函数,参数是(double)microtime() * 1000000,这里如果不这是参数就会自动设置个随机数,当然这不符合我们的需要,如此一来,随机数就具备一定的长度,保证了上传文件不重名。

接着,我们调用判断文件类型的函数,并将其转化为小写strtolower(fileext($_FILES['file']['name'])),这里有个很关键的东东$_FILES ,这是个超级全局数组,保存了需要处理的表单数据,如果开启了register_globals,也可以直接访问,但这是不安全的。

看刚才那个上传接口<inputname="file"type="file" value="浏览" >,根据这个表单名称,我们可以得到很多信息:$_FILES['file']['name']-- 得到文件名称$_FILES['file']['tmp_name']--得到临时存储位置$_FILES['file']['size']--得到文件大小$_FILES['file']['type']--得到文件MIME类型得到这些信息,我们就可以轻松判断文件的信息了,是不是很方便?^_^,接下来还有一些函数需要了解,file_exists()--判断指定目录是否存在,不存在我们当然不能上传(好像是废话!),move_uploaded_file--将上传文件移至指定目录,is_uploaded_file--判断文件是否已经通过HTTP POST上传。

相关文档
最新文档