精华内容
下载资源
问答
  • 文件上传文件从用户本地电脑通过传输方式(Web表单)保存到服务器所在电脑指定的目录下。 1、 增加文件上传表单:浏览器请求一个服务器的HTML脚本(包含文件上传表单) 2、 用户从本地选择一个文件(点击...

    多文件上传

    文件上传:文件从用户本地电脑通过传输方式(Web表单)保存到服务器所在电脑指定的目录下。

    1. 增加文件上传的表单:浏览器请求一个服务器的HTML脚本(包含文件上传表单)
    2. 用户从本地选择一个文件(点击上传框(按钮))
    3. 用户点击上传:文件会通过物联网传输到服务器上
    4. 服务器操作系统会将文件保存到临时目录:是以临时文件格式保存(windows下tmp)
    5. 服务器脚本开始工作:判断文件有效
    6. 服务器脚本将有效文件从临时目录移动到指定的目录下(完成)
    <form action="upload_file.php" method="post"
    enctype="multipart/form-data">
    
    上传图片: <input type="file" name="img" id="file" /> 
    
    </form>

    $_FILES变量接受文件详解
    标签名 img

    1. name:文件在用户(浏览器端)电脑上实际存在的名字(实际用来保留后缀)
    2. tmp_name:文件上传到服务器后操作系统保存的临时路径(实际用来给PHP后期使用)
    3. type:MIME(多功能互联网邮件扩展)类型,用来在计算机中客户端识别文件类型(确定软件)
    4. error:文件上传的代号,用来告知应用软件(PHP)文件接收过程中出现了什么问题(PHP后期根据代码进行文件判断)

    文件上传的封装函数
    判断条件:
    $file:需要上传的信息(name\tmp_name\type\error\size )
    $allow_type:允许上传的文件格式
    $path :存储路径
    &error :如果出现错误的原因
    $allow_formt=array() :允许文件上传的格式(jip png 等)
    $max_size:允许上传文件大小

    function upload_single($file,$allow_type,$path,&$error,$allow_format=array(),$max_size=2000000){
        //1、判断文件是否有效
        if(is_array($file)||!isset($file['error'])){
            $error = "上传文件不存在!";
            return false;
        }
        //2、判断文件存储路径是否有效
        if(!is_dir($file($path))){
            $error = "文件路径不存在!";
            return false;
        }
        //3、判断文件本身上传过程中是否有错误:error
        switch($file['error']){
            case 1:
            case 2:
            $error = "文件超出服务器允许的大小!";
            return $error;
            case 3:
            $error = "文件上传过程中出现问题,只上传一部分!";
            return $error;
            case 4:
            $error = "用户没有选中要上传的文件";
            return $error;
            case 6:
            case 7:
            $error = "文件保存失败!";
            return false;
        }
        //4、判断MIME类型
        if(!in_array($file['type],$allow_type))){
            $error = "当前文件类型不允许上传!";
            return false;
        }
        //5、判断后缀是否允许
        //取出后缀
        $ext = ltrim(strrchr($file['name],'.'),',');
        if(!empty($allow_format) && !in_array($ext,$allow_format)){
            //不允许上传
            $error = "当前文件格式不允许上传!";
            return false;
        }   
        //6、判断文件大小
        if($file['size']>$max_size){
            $error = "当前文件上传超出大小!";
            returnfalse;
        }
        //7、将文件移动到指定目录
        if(!is_uploaded_file($file['tmp_name'])){
            //文件临时目录不存在
            $error = "错误:不是上传文件!";
            return false;
        }
        //这里文件命名有可能冲突,可以使用时间戳+随机数给文件命名
        if(move_uploaded_file(#file['tmp_name'],$path.'/'.$file['tmp_name'])){
            //上传成功
            return $file['name'];
        }else{
            //失败
            $error = "文件上传失败!";
            return false;
        }
    }

    表单传值

    表单传值方式

    GET传值 1)form表单

    <form method=”GET”>表单元素</form>

    2)a标签

    <a href=”www.baidu.cn/index.php?学科=PHP”>

    3)location对象的href属性

    4)location对象的assign()方法

    POST传值 1)post表单方式的基本设定

    <form method=”POST”>表单元素</form>

    2)post方式跟get方式的区别

    1、 Get传输的数据主要用来获取数据,不改变服务器上资源:get只是用来获取内容

    2、 Post传输的数据主要用来增加数据,改变服务器上资源:POST会改变服务器上数据内容

    3、 传输方式上post必须使用form表单,而get可以使用form表单和URL

    4、 get传输数据可以在URL中对外可见,而post不可见:GET传值最终会在浏览器的地址栏中全部显示:?数据名=数据值&数据名2=数据值2…

    5、 get和post能传输的数据大小不同,get为2K,post理论无限制(事实上,GET和POST本身没有数据长度限制,但是浏览器厂家做了一些限制)

    6、 get和post能够传输的数据格式有区别:get传输简单数据(数值/字符串),post可以提交复杂数据(二进制等)

    表单接受数据

    PHP接收数据的三种方式 不管是$_GET/$_POST/$_REQUEST,三个都是PHP超全局(没有范围限制)预定义数组,表单元素的“name”属性的值作为数组的下标,而value属性对应的值就是数组的元素值

    $_GET方式:接收GET方式提交的数据
    $_POST方式:接收POST方式提交的数据

    1)$_REQUEST所存储数据的内容:将$_POST$_GET合并存储到一个数组
    2)$_REQUEST$_POST$_GET的联系:如果GET和POST中有同名数组元素(下标),POST会覆盖GET(PHP中数组元素下标具有唯一性),这个可以在php.ini中进行配置

    PHP处理复选框数据

    复选框传值: 通常是将一类内容以同样(同名)的形式传递给后台,数据库存储通常是一个字段存储。复选框的特点:选中才会提交

    语法: 在name值后面加 ‘[ ]’ , 例如:name="hobby[]";

    解释: PHP认为[]有特殊性:系统自动认为该符号是数组的形式,所以PHP就会自动的将同名的但是带有[]的元素组合到一起形成一个数组.

    <input type="checkebox" name="hobby[]" value="篮球"> <inputtype="checkebox" name="hobby[]" value="足球">

    复选框接受值: 接受到的是一个数组,可以使用implode()分割成字符串进行存储,取出时可以使用explorer()转化为数组;
    默认选中 : checked="checked" ;

    PHP处理单选框数据
    Radio button:可以出现多个选择项,但是只能选择其中一个
    1、 表单中使用的name属性,使用同名即可:只能选中一个
    2、 后台接收数据也不需要额外处理
    3、 数据库存储的话只需要一个字段存储普通数据即可(数字或者字符串) 例如:

    <input type="radio" name="gender" value="1">
    <input type="radio"name="gender" value="2">

    展开全文
  • input只允许上传图片类型文件

    千次阅读 2017-09-26 13:40:41
    input[file]标签的accept属性可用于指定上传文件的 MIME类型 。 例如,想要实现默认上传图片文件的代码,代码可如下: type="file" name="file" class="element" accept="image/*"> 效果如下图所示,默认...

     accept="image/*"

    解决变慢的问题

    input[file]标签的accept属性可用于指定上传文件的 MIME类型 。

    例如,想要实现默认上传图片文件的代码,代码可如下:

    <input type="file" name="file" class="element" accept="image/*">

    效果如下图所示,默认过滤掉所有非图片文件:

    但是!

    这段代码在Chrome和Safari等Webkit浏览器下却出现了响应滞慢的问题,可能要等 6~10s 才能弹出文件选择对话框。简直不能忍呀。

    在IE和Firefox中使用 accept=”image/*” 属性则没有发现响应延迟的问题。

    于是几经尝试后,发现是 accept=”image/*” 属性的问题,删掉它或者将 * 通配符修改为指定的MIME类型,就可以解决Webkit浏览器下的对话框显示滞慢的问题。

    解决办法如下:

    <input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg">

    accept=”image/*”属性会对每一个文件都遍历一次所有的”image/*”文件类型,当文件较多时,文件的检验时间较长,这可能是Webkit的底层实现的bug。

    另外,

    accept=”audio/*”和 accept=”video/*” 属性 在 Webkit浏览器下也会有同样的响应延迟的问题。同理,通过将 * 通配符 修改成指定的MIME类型就可解决。

    展开全文
  • //获取文件对象,files是文件选取控件的属性,存储的是文件选取控件选取的文件对象,类型是一个数组 var fileObj = fileM.files[0]; //创建formdata对象,formData用来存储表单的数据,表单数据时以键值对形式...
    <from action="" enctype="multipart/form-data" method="post">
        <a>
            <span>修改头像</span>
            <input type="file" id="fileUp" accept="image/png,image/jpeg">
        </a>
    </from>
    
    
    var fileM=document.querySelector("#fileUp");
    $("#fileUp").on("change",function() {
        //获取文件对象,files是文件选取控件的属性,存储的是文件选取控件选取的文件对象,类型是一个数组
        var fileObj = fileM.files[0];
        //创建formdata对象,formData用来存储表单的数据,表单数据时以键值对形式存储的。
        var formData = new FormData();
        formData.append('file', fileObj);
        $.ajax({
            url: "自己的后台的Url",
            type: "post",
            dataType: "json",
            data: formData,
            async: false,
            cache: false,
            contentType: false,
            processData: false,
            success: function (json_data) {
                alert("恭喜你!上传成功");
            },
        });
    });
    
    展开全文
  • 一、表单上传: html客户端部分: &lt;form action="upload.ashx" method="post" enctype="multipart/form-data"&gt; 选择文件:&lt;input type="file" ...

    一、表单上传:

    html客户端部分:

    <form action="upload.ashx" method="post" enctype="multipart/form-data">
            选择文件:<input type="file" name="file1" /><br />
            <input type="submit" value="上传" />
    </form>

    一般处理程序服务器端:

    public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                HttpPostedFile file1 = context.Request.Files["file1"];
                helper.uploadFile(file1, "~/upload/");//这里就是对相应方法进行调用
                context.Response.Write("ok");//提示执行成功
            }

    上传代码的封装:

    /// <summary>
            /// 上传图片
            /// </summary>
            /// <param name="file">通过form表达提交的文件</param>
            /// <param name="virpath">文件要保存的虚拟路径</param>
            public static void uploadImg(HttpPostedFile file,string virpath)
            {          
                if (file.ContentLength > 1024 * 1024 * 4)
                {
                    throw new Exception("文件不能大于4M");
                }
                string imgtype = Path.GetExtension(file.FileName);
                if(imgtype!=".jpg"&&imgtype!=".jpeg")  //图片类型进行限制
                {
                    throw new Exception("请上传jpg或JPEG图片");
                }
                using (Image img = Bitmap.FromStream(file.InputStream))
                {
                    string savepath = HttpContext.Current.Server.MapPath(virpath+file.FileName);
                    img.Save(savepath);
                }
            }
            /// <summary>
            /// 上传文件
            /// </summary>
            /// <param name="file">通过form表达提交的文件</param>
            /// <param name="virpath">文件要保存的虚拟路径</param>
            public static void uploadFile(HttpPostedFile file, string virpath)
            {
                if (file.ContentLength > 1024 * 1024 * 6)
                {
                    throw new Exception("文件不能大于6M");
                }
                string imgtype = Path.GetExtension(file.FileName);
                //imgtype对上传的文件进行限制
                if (imgtype != ".zip" && imgtype != ".mp3")
                {
                    throw new Exception("只允许上传zip、rar....文件");
                }
                string dirFullPath=  HttpContext.Current.Server.MapPath(virpath);
                if (!Directory.Exists(dirFullPath))//如果文件夹不存在,则先创建文件夹
                {
                    Directory.CreateDirectory(dirFullPath);
                }
                file.SaveAs(dirFullPath + file.FileName);
            }

    二、Ajax文件异步上传:

    注明:既然有了表单上传为什么又要ajax上传呢?因为表单上传过程中,整个页面就刷新了!ajax异步上传就可以达到只刷新局部位置,下面就简单看看ajax上传吧!

    html客户端部分:

    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <h2>文件上传</h2>
        <form action="/api/upload" method="post" enctype="multipart/form-data">
            <input type="file" id="file1" /><br />
            <input type="button" value="submit" id="submit-button" />
        </form>
    </body>
    <script src="/static/libs/jquery/jquery-1.11.2.min.js"></script>
    <script>
        $("#submit-button").click(function (e) {
            e.preventDefault();
            
            var formData = new FormData();
            formData.append("pic-upload", document.getElementById("file1").files[0]);
    
            $.ajax({
                type: 'POST',
                url: "/api/upload",
                data: formData,
                //必须false才会自动加上正确的Content-Type
                contentType: false,
                // 必须false才会避开jQuery对 formdata 的默认处理,XMLHttpRequest会对 formdata 进行正确的处理
                processData: false,
                success: function (response) {
                    console.log(response);
                },
                error: function (response) {
                    console.log(response);
                }
            });
        })
    </script>
    
    </html>

    node.js服务器端:

    const express = require("express")
    const fs = require("fs")
    const mysql = require("mysql")
    const util = require("util")
    const { getNow } = require("./tool")
    
    const app = express();
    
    var multer = require('multer');//获得中间件
    var upload = multer({dest:'uploads/'});//指定配置项,这里指定文件保存于当前目录下的upload子目录
    app.use(upload.single('pic-upload'));//运用中间件,并且指明文件名,此名需要同html input name的文件名一致,否则会报错
    
    const bodyParser = require("body-parser");
    const { nextTick } = require("process");
    app.use("/static/", express.static("./static/"));
    app.use('/node_modules/', express.static('./node_modules/'));
    app.engine("html", require("express-art-template"))
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(bodyParser.json())
    
    app.get("/upload", (req, res) => {
        res.render("upload.html");
    })
    
    app.post("/api/upload", (req, res) => {
        res.set({
            'content-type': 'application/json; charset=utf-8'
        });
    
        res.end("上传成功!");
    })
    
    
    app.get("/404", (req, res) => {
        res.render("404.html");
    })
    
    // 配置一个全局错误处理中间件
    app.use(function (err, req, res, next) {
        res.status(500).json({
            err_code: 500,
            message: err.message
        })
    })
    
    app.listen(5555, () => {
        console.log("服务启动成功......");
    })

     

     

    展开全文
  • 注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理!资源下载:jQuery官方下载地址:https://jquery.com/download/一.表单上传:html客户端部分:...
  • ... ----------------------------------------------------------------------------------------------------...创建一个文件上传表单允许用户从表单上传文件时非常有用的; 下面是一个供上传文件的html表单
  • php设置允许上传文件最大值

    千次阅读 2015-10-15 11:09:45
    打开php.ini,首先找到 ;;;;;;;;;;;;;;;; ; File Uploads ;...是否允许通过HTTP上传文件的开关。默认为ON即是开 upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认
  • 在表格中,您可以填写一些字段,例如名字,姓氏,电子邮件并上传文件。 填写所有字段后,您可以提交表单,该表单在从Google服务器获得确认已成功上传表单的确认后,会将您重定向到“问候语”页面。 在后台,表单的...
  • •Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的...–使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件上传功能 –能够全程控制上传内容 –能够对
  • 法一:form表单上传文件 form表单上传是比较传统的方法,主要是利用js中本身的属性,拥有比较好的兼容性,ie的各个版本都支持。 <!-- 表示二进制提交,不进行编码 --> <!-- 必须post提交,get最多2...
  • 无刷新文件上传 ajax提交表单

    千次阅读 2011-09-20 16:32:13
    首先要说的就是 ajax 是无法实现上传文件的,可以想一下ajax与后台通信都是通过传递字符串,怎么能传递文件呢?其实出于安全考虑js是不能操作文件的,所以就不要再说用ajax来实现文件的上传了,这是不可能的。
  • 实现文件上传的form表单必须满足两个条件:method="post" enctype="multipart/form-data" 表单中enctype="multipart/form-data"的意思是设置表单的MIME编码。默认情况,这个编码格式是application/x-...
  • form表单无刷新上传文件 标签: form-前端无刷新文件上传验证 2015-07-31 16:32 13672人阅读 评论(0) 收藏 举报  分类: 【java】(27) 【Web前端】(2)  版权声明:本文为博主...
  • 创建一个文件上传表单 允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单: 复制代码 代码如下: <html> <body> <form action=”upload_file.php” method=”post” enctype=...
  • php之表单文件iframe异步上传

    千次阅读 2016-05-14 22:45:28
    文件上传控件内容变化的时候触发JS设置表单的action为处理文件上传的img_upload_process.php文件,并且将表单的target设置为iframe,让iframe去提交到服务器进行文件上传; 3.img_upload_process.php中处理文件...
  • 在用这个样式之前我们要准备两个资源包,分别是fileinput.css和fileinput.js将他们导入到项目中,同时还要导入...show-cancel data-show-caption:显示文件上传的简介 data-allowed-file-extensions:允许文件后缀名
  • 一、准备好form表单,代码...2. form表单提交类型一定要加上enctype="multipart/form-data",这是提交媒体文件的声明。 3. form表单提交的target="id_iframe",是为后台处理完成后返回结果刷新name为id_iframe的ifra
  • 表单是从网站访问者那里收集信息的一种简便方法,文件上传使用户可以添加更多有用或重要的信息。 您可以从文件上传表单中收集的一些数据包括: 用户提交的图像和视频 博客文章形式的内容 简历文件 在本文...
  • 一、FormData收集表单数据(包括文件) ...FormData可以实现普通表单域 和 上传文件域 信息的收集。 收集附件信息: dom方式只可以收集普通的表单域信息,并且浏览器由于安全方面的限制也禁止通过javascript语言操
  • 在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势。Spring通过对Servlet API的HttpServletRequest接口进行...
  • 代码很简单,这里我们就不多废话了,直接奉上源码 <?...// 注册表单的姓名 $name=""; $nameErr=""; if ($_SERVER["REQUEST_METHOD"]=="POST") { if (empty($_POST['name'])) { ... $nameErr="只允许字母... // 文件上传
  • JSP 文件上传

    2021-01-20 14:23:08
    JSP 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。 本章节我们使用 Servlet 来处理文件上传,使用到的文件有: upload.jsp : 文件上传表单。 ...
  • 在java中,用Apache-tomcat 服务器的commons-fileupload.jar、commons-io.jar架包进行文件上传操作注意事项
  • 近期有个很早的项目需要做一个公开接口,并且...1:文件上传时,如果只是上传文件,不需要其他属性的话,可以直接接收流,接收的方式为: @Path("/test") @Consumes(MediaType.MULTIPART_FORM_DATA) public v...
  • 当一个html文件中存在多个上传控件,例如:既要上传文件,又要上传图片,此时怎么使用layui.upload ? 解决办法:修改layui.upload中field参数,如下:(具体见js部分图片上传代码中) html页面元素 <div ...
  • ajax方式提交带文件上传表单

    千次阅读 2011-08-04 17:40:46
    ajax方式提交带文件上传表单  一般的表单都是通过ajax方式提交,所以碰到带文件上传表单就比较麻烦。基本原理就是在页面增加一个隐藏iframe,然后通过ajax提交除文件之外的表单数据,在表单数据提交成功之后的...
  • 主要将实现一下两个功能: ...1、使用commons-fileupload实现文件上传(包括图片); 2、使用jquery-form.js实现表单提交成功的回调函数。 文件上传 function subimtBtn() { va
  • PHP 文件上传

    2021-01-03 05:39:48
    ... 本章节实例在 test 项目下...允许用户从表单上传文件是非常有用的。 请看下面这个供上传文件的 HTML 表单: 软件开发网(mscto.com)  文件名:     将以上代码保存到 form.html 文件中。 有关上面的 HTML 表单

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,849
精华内容 21,939
关键字:

允许上传图片文件的表单