通过 PHP,可以把文件上传到服务器。里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件。

为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的网站源码,全部救变成他的了,直接打包看你的代码。所以一定要控制上传的目录与文件类型,一般只可以上传图片。

下面就分别介绍下php上传文件php上传图片的方法与代码。

创建一个文件上传表单 
允许用户从表单上传文件是非常有用的。 
请看下面这个供上传文件的 HTML 表单:

  1. <html>
  2. <body>
  3. <form action="upload_file.php" method="post"
  4. enctype="multipart/form-data">
  5. <label for="file">Filename:</label>
  6. <input type="file" name="file" id="file" />
  7. <br />
  8. <input type="submit" name="submit" value="Submit" />
  9. </form>
  10. </body>
  11. </html>

请留意如下有关此表单的信息: 
<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。 
<input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。 
注释:允许用户上传文件是一个巨大的安全风险。请仅仅允许可信的用户执行文件上传操作。

创建上传脚本 
"upload_file.php" 文件含有供上传文件的代码:

  1. <?php
  2. if ($_FILES["file"]["error"] > 0)
  3. {
  4. echo "Error: " . $_FILES["file"]["error"] . "<br />";
  5. }
  6. else
  7. {   www.jbxue.com
  8. echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  9. echo "Type: " . $_FILES["file"]["type"] . "<br />";
  10. echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  11. echo "Stored in: " . $_FILES["file"]["tmp_name"];
  12. }
  13. ?>

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。 
第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

  1. $_FILES["file"]["name"] - 被上传文件的名称
  2. $_FILES["file"]["type"] - 被上传文件的类型
  3. $_FILES["file"]["size"] - 被上传文件的大小,以字节计
  4. $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  5. $_FILES["file"]["error"] - 由文件上传导致的错误代码

这是一种非常简单文件上传方式。基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制 
在这个脚本中,我们增加了对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

  1. <?php
  2. if ((($_FILES["file"]["type"] == "image/gif")
  3. || ($_FILES["file"]["type"] == "image/jpeg")
  4. || ($_FILES["file"]["type"] == "image/pjpeg"))
  5. && ($_FILES["file"]["size"] < 20000))
  6. {
  7. if ($_FILES["file"]["error"] > 0)
  8. {   www.jbxue.com
  9. echo "Error: " . $_FILES["file"]["error"] . "<br />";
  10. }
  11. else
  12. {
  13. echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  14. echo "Type: " . $_FILES["file"]["type"] . "<br />";
  15. echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  16. echo "Stored in: " . $_FILES["file"]["tmp_name"];
  17. }
  18. }
  19. else
  20. {
  21. echo "Invalid file";
  22. }
  23. ?>

注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。 
保存被上传的文件 
上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。 
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

  1. <?php
  2. if ((($_FILES["file"]["type"] == "image/gif")
  3. || ($_FILES["file"]["type"] == "image/jpeg")
  4. || ($_FILES["file"]["type"] == "image/pjpeg"))
  5. && ($_FILES["file"]["size"] < 20000))
  6. {
  7. if ($_FILES["file"]["error"] > 0)
  8. {
  9. echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
  10. }
  11. else
  12. {
  13. echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  14. echo "Type: " . $_FILES["file"]["type"] . "<br />";
  15. echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  16. echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
  17. if (file_exists("upload/" . $_FILES["file"]["name"]))
  18. {  www.jbxue.com
  19. echo $_FILES["file"]["name"] . " already exists. ";
  20. }
  21. else
  22. {
  23. move_uploaded_file($_FILES["file"]["tmp_name"],
  24. "upload/" . $_FILES["file"]["name"]);
  25. echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
  26. }
  27. }
  28. }
  29. else
  30. {
  31. echo "Invalid file";
  32. }
  33. ?>

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。 
注释:这个例子把文件保存到了名为 "upload" 的新文件夹。

PHP 图片文件上传代码的更多相关文章

  1. PHP 图片文件上传代码分享

    分享下php上传图片文件的一段代码,挺不错的. 通过 PHP,可以把文件上传到服务器.加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件. 当然了,会禁止上传php文件,以及其它程序代 ...

  2. 转:ios的图片文件上传代码

    转自: https://gist.github.com/igaiga/1354221 @interface ImageUploader : NSObject { NSData *theImage; } ...

  3. SpringMvc MultipartFile 图片文件上传

    spring-servlet.xml <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipar ...

  4. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

  5. php文件上传代码解析

    php文件上传代码解析 is_uploaded_file()  //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...

  6. springmvc图片文件上传接口

    springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...

  7. servlet3.0获取参数与文件上传代码示例

    转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98   package com.igeek.servlet;   import ...

  8. PHP代码篇(五)--如何将图片文件上传到另外一台服务上

    说,我有一个需求,就是一个临时功能.由于工作开发问题,我们有一个B项目,需要有一个商品添加的功能,涉及到添加商品内容,比如商品名字,商品描述,商品库存,商品图片等.后台商品添加的接口已经写完了,但是问 ...

  9. 实现Magento多文件上传代码功能开发

    在Magento中上传单个文件很简单,可以直接在继承的Mage_Adminhtml_Block_Widget_Form类中直接添加如下组件Field:  对于图片:   $fieldset->a ...

随机推荐

  1. ios uitableviewcell动态计算高度

    #import <UIKit/UIKit.h> @interface TestCell : UITableViewCell @property (weak, nonatomic) IBOu ...

  2. Java基础知识强化之IO流笔记72:NIO之 NIO核心组件(NIO使用代码示例)

    1.Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓冲区) Selectors(选择器) 虽然Java NIO 中除此之外还有很多类和组件,Channel,Bu ...

  3. ArcGIS 投影转换(AE)

    private void btnOK_Click(object sender, EventArgs e) { try { CheckError(); this.checkEdit1.Enabled = ...

  4. 源自梦想 自定义ViewGroup的整理_2

    Android项目: 1.准备资源图片.图片放到hdip里和mdip里对想过的影响:对于320*480的模拟器,默认去mdip里去找图片资源,拿过来的图片可以直接用,清晰度不变.要是所要找的图片在hd ...

  5. android 中对于采用okhttp时获取cookie并放入webview实现跳过登陆显示页面的功能

    最近项目需要将网页的一些信息展示到app当中,由于采用的是okhttp进行网络的访问,并采用了cookie对于每次的访问请求都做了验证,所以在加入webview显示网页的时候会需要进行一下验证,为了跳 ...

  6. extjs中grid对于其中表单的表头的读取以及是否隐藏的判断

    //获取grid的表头信息 var columns=baseGrid.columns;                     alert(columns.length); //判断列是否隐藏并输出表 ...

  7. Java协变返回类型

    今天看到句话:“支持重写方法时返回协变类型”. 那么什么事协变类型?在网上找了找资料,大体上明白了. Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方 ...

  8. Spring操作mongo排序,限制查询记录数

    Query query = new Query(); Criteria criteria = Criteria.where("timestamp").gt(from).lt(to) ...

  9. JavaScript库开发者们的规则

    详细内容请点击 1. 保持无侵入性 我的HTML标记不想知道你的JavaScript代码. 2. 严禁修改和扩展Object.prototype! 这条很重要,因此需要一条完全针对它的规则.对象是Ja ...

  10. return,exit,die

    return:代表退出某个函数,但是函数体外的语句仍然需要执行. exit:退出程序,但是不从内存中卸载,exit其实也是可以输出语句的,加一个括号即可. die:退出程序,并且从内存中卸载.