关于HTML的FORM上传文件问题

首先,大家可以测试后一段代码

    <form id="form1" runat="server">
        <input type="file" name="ttt" />
        <input type="submit" value="点击" />
    </form>

然后在后台

  var files= Request.Files;

你会发现files里面什么都没有,

为什么呢,原来是form压根就没上传 file,因为一个属性在作怪enctype

因为form有一个属性enctype 属性,enctype规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。

描述
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data
不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain 空格转换为 "+" 加号,但不对特殊字符编码。

从上表enctype的取值可以看出,默认的会编码所有字符,当有文件上传时直接抛弃了。

此时该换成

    <form id="form1" runat="server" enctype="multipart/form-data">
        <input type="file" name="ttt" />
        <input type="submit" value="点击" />
    </form>

即可。并注意input file必须要有name属性,否则也不被上传。

时间: 2024-10-13 12:15:49

关于HTML的FORM上传文件问题的相关文章

c# 模拟表单提交,post form 上传文件、大数据内容

表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每一份资料的边界 (boundary),用以产生多重信息部份 (message part).而 HTTP 服务器可以抓取 HTTP POST 的信息, 基本内容:1. 每个信息部份都要用 --[BOUNDARY_NAME] 来包装,以分隔出信息的每个部份,而最后要再加上一个 --[BOUNDARY_N

使用HTML的表单form上传文件,需要考虑的几个问题

应用系统中经常需要有文件上传功能,一般的做法都是使用HTML的<form>和<input type="file">,或者使用第三方文件上传组件,如swfupload和uploadify.我们都知道如果向服务器提交数据,一般来说都是使用POST请求,请求数据会放在请求体中,以key1=value1&key2=value2的形式.这样的报文,服务器是很容易解析的.如果是上传文件,通过httpwatch抓包工具,我们可以发现:文件的内容也是放在post请求体中

jQuery.form 上传文件

今年大部分是都在完善产品,这几天遇到了一个问题,原来的flash组件不支持苹果浏览器,需要改.在网上搜了下,看到一个jQuery.form插件可以上传文件,并且兼容性很好,主要浏览器大部分都兼容,插件官网: http://malsup.com/jquery/form/.还有就是需要jQuery类库. 结果图片: 前端代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g

form上传文件以及跨域异步上传

要设置了enctype属性才能上传,需要使用上传的jar包,这里使用的是cos-26Dec2008.jar, 而且后台获取值的时候,getfile要放在第一位 一次设置好上传格式后没有上传文件,也就没有getFile,结果总是取不到值,删掉enctype="multipart/form-data"属性就ok了. 关于跨域上传文件: 跨域上传文件总会报错,即使服务器端设置了header('Access-Control-Allow-Origin: *'),仍会报错说缺少multipart属

关于form 上传文件时的小问题

平时的form一般写成这样: <form action=" " method="" id="" name=""> 当需要上传文件时 必须要加一个属性 即: <form ......   enctype="mulitpart/form-data"> 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格

jquery.form上传文件

建立test文件夹 PHP代码: <?php //var_dump($_FILES['file']);exit; if(isset($_GET['option']) && $_GET['option']=='delete'){ @file_put_contents(dirname(__FILE__)."/------------0.txt", $_GET['path']."\r\n",FILE_APPEND); unlink($_GET['pa

flask使用原生ajax、不使用表单(Form)上传文件

〇.知识点 jquery ajax 文档告诉你可以使用默认的 application/x-www-form-urlencoded, multipart/form-data, or text/plain 这三种,其它的也可以,但是需要告诉ajax 的怎样序列化它.--这句话来源于:https://www.cnblogs.com/htoooth/p/7242217.html 一.原生ajax.不使用表单(Form) app.py import os from flask import Flask,

$_FILE参数详解及简单&lt;form&gt;表单无刷新上传文件

$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传 $_FILES数组内容如下: $_FILES['myFile']['name'] 客户端文件的原名称 $_FILES['myFile']['type']   文件的 MIME类型,需要浏览器提供该信息的支持,例如"image/gif" $_FILES['myFile']['size']    已上传文件的大小,

PHP 后台程序配置config文件,及form表单上传文件

一,配置config文件 1获取config.php文件数组, 2获取form 表单提交的值 3保存更新config.php文件,代码如下: 1 $color=$_POST['color']; 2 $backtype=$_POST['backtype']; 3 4 $settings=include(dirname(__DIR__).'/config.php'); 5 6 $settings['themescolor']=(int)$color; 7 $settings['themesbackg