php文件上传$_FILES move_uploaded_file详细说明

 更新时间:2016年11月25日 17:32  点击:2268

第一种比较简单就是files利用index.php教程接入值就成了,没经过判断,都会用到move_uploaded_files与files[]全局变量如下

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

$_files["file"]["name"] - 被上传文件的名称
$_files["file"]["type"] - 被上传文件的类型
$_files["file"]["size"] - 被上传文件的大小,以字节计
$_files["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_files["file"]["error"] - 由文件上传导致的错误代码
这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制

 

<form action="index.php" method="post"  enctype="multipart/form-data">
      缩略图:<input type="file" name="files" />
      <input type="submit" value="提交"/>
    </form>
  </body>
</html>

php代码

1 <?php2         $temp_name = $_files[files][tmp_name];            //临时文件3          $now_name  = $_files[files][name];                    //当前文件4          move_uploaded_file($temp_name,'./images/'.date('yyyymdhis').$now_name);    //移动到指定的文件夹下面5  ?>

下面来看一个完整一点的文件上传代码

html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="submit" />
</form>

</body>
</html>

php处理文件

<?php
if ($_files["file"]["error"] > 0)
  {
  echo "error: " . $_files["file"]["error"] . "<br />";
  }
else
  {
  echo "upload: " . $_files["file"]["name"] . "<br />";
  echo "type: " . $_files["file"]["type"] . "<br />";
  echo "size: " . ($_files["file"]["size"] / 1024) . " kb<br />";
  echo "stored in: " . $_files["file"]["tmp_name"];
  }
?>

<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

如果你要限制文件上传类型与大小可以这样

if ((($_files["file"]["type"] == "image/gif")
|| ($_files["file"]["type"] == "image/jpeg")
|| ($_files["file"]["type"] == "image/pjpeg"))
&& ($_files["file"]["size"] < 20000))

其它原理很简单,利用form表单的target属性和iframe来实现的,打开为iframe试就行了,返回就利用js判断php教程运行后返回的参数是不是成功
一、上传文件的一个php方法。
该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失败,则返回空字符串。

php代码

    function uploadfile($file) {
        // 上传路径     $destinationpath = "./upload/";
        if (!file_exists($destinationpath)){
            mkdir($destinationpath , 0777);     }
        //重命名
        $filename = date('ymdhis') . '_' . iconv('utf-8' , 'gb2312' , basename($file['name']));
        if (move_uploaded_file($file['tmp_name'], $destinationpath . $filename)) {         return iconv('gb2312' , 'utf-8' , $filename);
        }     return '';
      }

二、客户端html代码
这里正是技巧所在,添加另一个iframe来实现。表单标签form定义了一个属性target,该属性解释如下:
[pre]target属性:
_blank   ----------   新开窗口
_self   -----------   自身
_top   ------------   主框架
_parent   ---------   父框架
自定义名字     -----   出现于框架结构,将会在该名称的框架内打开链接

本例中采用iframe名字,所以表单在提交时会在iframe内打开链接(即无刷新,确切的说应该是
感觉无刷新)
在表单提交时,调用startupload方法,当然这是js定义的。
[/pre][pre]此外我们还定义一个span来显示提示信息。代码如下:
[/pre]xhtml代码

   

<form id="upform" action="upload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startupload()"> 导入文件:<input type="file" name="myfile" id="myfile" />
    <input type="submit" name="submitbtn" value="导入" /> <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;">iframe>
    form> <span id="info">span>

三、js部分

这部分比较简单,只是显示提示信息

网页特效代码
    function startupload() {
        var spanobj = document.getelementbyid("info");     spanobj.innerhtml = " 开始上传";
    }
    function stopupload(responsetext){     var spanobj = document.getelementbyid("info");
        spanobj.innerhtml = " 上传成功;     spanobj.innerhtml = responsetext;
      }

接下来就要看服务器端得处理了。

四、服务器段处理部分

php代码

    $file = $_files['myfile'];   $filename = uploadfile($file);
      $result = readfromfile("./upload/" . $filename);

此外在后面还应该加上一句js代码用来调用stopupload方法。
javascript代码

  

    window.top.window.stopupload("");

最后在补上php中的readfromfile方法,就大功告成了。
php代码

    function readfromfile($target_path) {
        // 读取文件内容     $file = fopen($target_path,'r') or die("unable to open file");
        $filecontent = '';     while(!feof($file))
        {         $str = fgets($file);
            $filecontent .= $str;     }
        fclose($file);     return $filecontent;
      }

总结:方法很简单扼要,如果你以前没想到觉得ajax无刷新文件上传很难,现在明白利用iframe target来制作就觉得很容易了。

php教程 url地址 email ip地址 验证
以前验证邮箱,ip,url地址都要用正则,现在我们利用php filter_validate_url,filter_validate_email,filter_validate_ip三个函数。
filter_validate_url 把值作为 url 来验证。
filter_validate_email 把值作为 e-mail 来验证。
filter_validate_ip 把值作为 ip 地址来验证。

*/

$url = "example.php?name=peter&age=37";

if(!filter_var($url, filter_validate_url, filter_flag_query_required))
{
echo "url is not valid";
}
else
{
echo "url is valid";
}

/*
filter_validate_email 过滤器把值作为电子邮件地址来验证
*/

$email = "someone@exa mple.com";

if(!filter_var($email, filter_validate_email))
 {
 echo "e-mail is not valid";
 }
else
 {
 echo "e-mail is valid";
 }

/*
filter_validate_ip 过滤器把值作为 ip 进行验证。
*/
$ip = "192.168.0.1";

if(!filter_var($ip, filter_validate_ip))
 {
 echo "ip is not valid";
 }
else
 {
 echo "ip is valid";
 }
 
 //ipv6
 
 $ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

if(!filter_var($ip, filter_validate_ip, filter_flag_ipv6))
 {
 echo "ip is not valid";
 }
else
 {
 echo "ip is valid";
 }

因为工作上的需要我要对一批数据进行按日期进行更新发布日期,如果我要从今天20110112开始向前更新30天数据,我们发现在利用php教程 strtotime函数与date很容易实现代码哪下。

strtotime() 函数将任何英文文本的日期时间描述解析为 unix 时间戳。

语法
strtotime(time,now)参数 描述
time 规定要解析的时间字符串。
now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。


*/

$cu_date = date("ymd");
$mk = strtotime($cu_date);
for( $i=1;$i<=30;$i++)
{
 $mk = $mk -86500;
 echo date("ymd",$mk).'<br />';
}

/*

20110110
20110109
20110108
20110107
20110106
20110105
20110104
20110103
20110102
20110101
20101231
20101230
20101229
20101228
20101227
20101226
20101225
20101224
20101223
20101222
20101221
20101220
20101219
20101218
20101217
20101216
20101215
20101214
20101213
20101212

核心代码就是$mk -86500哦,因为一天是86500毫秒,所以利用上次相减的时间再减86500就是要更新的时间了.

表单部分:
代码如下:

<html>
<head>
<title>
my is upfile app!!
</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<form enctype="multipart/form-data" method="post" action="upfile_add.php教程">
文件名: <input type="text" name="title" />
上传文件: <input type="file" name="file" />
<input type="submit" vlaue="提交" />
</form>
</body>
</html>

2,处理表单页面:
代码如下:

<?php
$mkdir_file_dir = mkdir('./img/'.$_post['title'],0777); //获取到标题,在最终的目录下面建立一个文件夹用来存放分类指定的文件
$tmp_file_name = $_files['file']['tmp_name']; //得到上传后的临时文件
$file_name = $_files['file']['name']; //源文件
$file_dir = './img/'.$_post['title'].'/'; //最终保存目录
if(is_dir($file_dir))
{
move_uploaded_file($tmp_file_name,$file_dir.$file_name); //移动文件到最终保存目录
$img_url = $file_dir.$file_name;
$link = mysql教程_connect("localhost","root","");
mysql_select_db("fenye");
mysql_query("set names utf8");
$insert = "insert into upfiles(title,img_url) values ('{$_post['title']}','{$img_url}') ";
mysql_query($insert); //把文件路径存放到数据库教程中
}
?>
[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25