PHP上传文件功代码练习

前端:

<html>
    <head><title>upload file</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    </head>
    <body>
        <form action="uploadtest.php" method="post" enctype="multipart/form-data">
            <!-- name必须是MAX_FILE_SIZE,value是字节数 -->
            <input type="hidden" name="MAX_FILE_SIZE" value="2097152"/>
            <!-- accept是文件的MIME类型 -->
            <input type="file" name="fileName" accept="image/jpeg,image/gif,image/png,application/x-MS-bmp,text/plain,text/html" />
            <input type="submit" value="上传文件"/>
        </form>
    </body>
</html>

上传文件的函数:

<?php
header(‘content-type:text/html;charset=utf-8‘);

function uploadFile($file,$uploadpath=‘upload‘,$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘],$max=2097152,$flag=false){

    //[email protected]$_FILES[‘fileName‘];
    //var_dump($file);
    //$max=2097152; //加入到参数中,默认2M
    //由于客户端限制靠不住,所以也要在服务端进行限制。
    //限制文件的大小;
    if ($file[‘size‘]>$max) {

        exit(‘文件过大,不能上传。‘);
        # code...
    }

    if ($file[‘error‘]!==0) {

        switch($file[‘error‘]){
            case 1:
                $errmsg= "上传文件超过了php.ini中upload_max_filesize选项限制的值。";
                 break;

               case 2:
                   $errmsg=  "上传文件的大小超过了HTML表单中max_file_size选项指定的值。";
                   # code...
                   break;
               case 3:
                   $errmsg=  "文件只有部分被上传";
                   # code...
                   break;
               case 4:
                   $errmsg=  "没有文件被上传";
                   # code...
                   break;
               case 6:
                   $errmsg=  "找不到临时文件夹。";
                   # code...
                   break;
               case 7:
               case 8:
                   $errmsg=  "系统出错";
                   # code...
                   break;
        }

        exit($errmsg);
        # code...
    }else{
        //判断是否是通过HTTPPost上传
        if (!is_uploaded_file($file[‘tmp_name‘])) {

            exit(‘不是通过HTTP Post上传‘);
            # code...
        }

        //判断文件格式
        //也可以用 pathinfo($file[‘name‘],PATHINFO_EXTENSION);
        $ext[email protected]strtolower(end(explode(‘.‘, $file[‘name‘])));
        //$extarray=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘,‘bmp‘];//加入到数组中,定制文件类型
        if (!in_array($ext, $extarray)) {

            exit(‘文件格式错误‘);
            # code...
        }

        //判断是否是真正的图片
        if($flag===true){
            if (@!getimagesize($file[‘tmp_name‘])) {

                exit(‘不是真正的图片‘);
                # code...
            }
        }
        //指定上传目录
        //$uploadpath=‘upload‘;//加入到参数中 默认值为‘upload‘

        //判断文件是否存在
        if (!file_exists($uploadpath)) {

            mkdir($uploadpath,0777,true);
            chmod($uploadpath, 0777);
            # code...
        }

        //确保每个上传的文件有唯一的名字
        $newname=md5(uniqid(microtime(true),true)).‘.‘.$ext;
        $pathname=$uploadpath.‘/‘.$newname;

        if (move_uploaded_file($file[‘tmp_name‘], $pathname)) {

            // exit(‘上传成功‘);
            // # code...
            return $pathname;
        }

    }

}

?>

使用函数:

<?php
include(‘upload.func.php‘);
$file=$_FILES[‘fileName‘];

$new=uploadFile($file,‘lijian‘,$extarray=[‘txt‘,‘html‘]);
echo $new;
时间: 2024-10-26 17:37:40

PHP上传文件功代码练习的相关文章

上传文件按钮代码示例

input file上传按钮的美化思路是,先把之前的按钮透明度opacity设置为0,然后,外层用a标签或其他标签包裹,就实现了美化功能<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .a-upload { position: relative; dis

上传文件后台代码

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;using System.Data;using System.Data.SqlClient;using Common;using BLL;namespace CRM.UI{ public partial

Qt通过HTTP POST上传文件

本文使用Qt Creator用HTTP POST的方法上传文件,并给出一个上传文件的例程. 本文主要客户端,所以对于服务器端程序编写的描述会比较简略 服务器使用Django编写,django服务器接收文件的方法在文章http://www.cnblogs.com/fnng/p/3740274.html中有较为清晰的讲解,我搭建的服务器端程序除了没有网页客户端以及部分变量名称不同以外,基本上与这篇文章的服务器搭建过程一样. 如果服务器端程序发生变化,这篇文章后面给出的客户端例程可能就不再适用.因此如

采用HttpClient3.x上传文件 spring 文件上传

最近,项目需要调用第三方的系统上传图片,在长传图片的同时,还需要携带其他的请求参数:整体的流程是:网页---->spring mvc--->业务处理---->调用第三方系统上传图片: 在此期间遇到的问题是:在调用第三方系统上传图片时,除了图片文件参数外,其他参数期望通过request.getParameter()方法能够访问到,采用了很多方式,都不行,最终通过不断的尝试,测试成功,特贡献出来供需要的人员参考! 采用spring 的MultipartFile进行文件上传,代码如下     

JSP简单练习-上传文件

注意:在编写上传文件的代码时,需确保"WEB-INF/lib"下含有jspsmartupload.jar包,否则会出错. jspSmartupload.jar下载 <!-- uploadfileform.jsp --> <%@ page language="java" contentType="text/html; charset=gb2312" %> <html> <head> <title

Spring Cloud Feign Client 实现MultipartFile上传文件功能

这两天老大突然交给一个任务,就是当用户关注我们的微信号时,我们应该将其微信头像下载下来,然后上传到公司内部的服务器上.如果直接保存微信头像的链接,当用户更换微信头像时,我们的产品在获取用户头像很可能会出现404异常. 由于公司运用的技术栈为spring Cloud(一些Eureka, Feign)进行服务注册和远程调用. 重点来了....但直接使用FeignClient去远程调用注册中心上的上传文件接口,会一直报错. @PostMapping    @ApiOperation(value = "

前端之web上传文件的方式

前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传文件方式介绍 在web浏览器上传文件一般有以下几种方式: form表单上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe上传文件 其中form提交数据之后会整个刷新页面:js通过ajax上传文件虽然不会刷新整个页面,但是他们都是通过使用formdata对

15. 利用ajax jquery 上传文件

通过jQuery Ajax使用FormData对象上传文件 字数664 阅读26857 评论18 喜欢18 FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 在 Mozilla Developer 网站 使用FormData对象 有详尽的FormData对象使用说明. 但上传文件部分只有底层的XMLHttpRequest对象发送上传请求,那么怎么通过jQuery的Ajax上传呢? 本文将介绍通过jQuery使用F

Linux命令行上传文件到百度网盘

利用bpcs_uploader你可以自动将VPS主机上的文件上传到百度网盘中,同时也可以从百度网盘中下载文件到VPS主机上,让你的文件安全地"住"在百度云中.[font=Tahoma, 'Microsoft Yahei', Simsun]百度云空间容量大,且有了百度这个靠山,日后也不必担心网盘关门走人,随着众多国内网盘开始投放大量的广告到网盘下载页面(典型的有华为网盘.下载赚钱网盘),百度网盘清爽的风格就显得难能可贵了.将文件上传到百度云中就可以方便其它用户下载 1.安装wdcp wg