form在HTML中,是用于收集用户输入的,基本全部浏览器都支持form。给form加入method属性。就能实现将用户在form内控件输入的信息POST到制定地址。或发送GET请求。

写了以下一段代码。为了实现将用户选择的文件。POST到server。server端文件接收代码见这里,本文仅仅讲前端。不讲后端。form用于文件上传时。数据编码属性enctype必须设置为multipart/form-data。属性说明见这里

<form action="http://localhost:8000/upload/file=1.txt" enctype="multipart/form-data" method="post">
<input type="file">
<input type="submit" value="Send">
</form>

在FireFox中用FireBug查看HTTP报文:

Request Headers From Upload Stream
Content-Length 48
Content-Type multipart/form-data; boundary=---------------------------121841334829646

发现文件的内容根本不能POST到server。仅仅有"-----------------------------121841334829646--"能被发送到server。

用wireshark抓包也是相同的结果。

百思不得其解,就到stackoverflow发问了。

原来,form中的控件,仅仅有加了name属性的,才生效!

改正后的代码:

<form action="http://localhost:8000/upload/file=1.txt" enctype="multipart/form-data" method="post">
<input type="file" name="xxx">
<input type="submit" value="Send">
</form>

这是POST文件到server的全部数据:

-----------------------------30746427313740
Content-Disposition: form-data; name="xxx"; filename="1.txt"
Content-Type: text/plain 111
-----------------------------30746427313740--

当中仅仅有“111”才是文件的内容。

form怎样正确post文件的更多相关文章

  1. WordPress Contact Form 7插件任意文件上传漏洞

    漏洞名称: WordPress Contact Form 7插件任意文件上传漏洞 CNNVD编号: CNNVD-201311-415 发布时间: 2013-11-28 更新时间: 2013-11-28 ...

  2. nodejs问题整理--fs.exists无法正确判断文件的问题

    fs.exists方法 方法说明: 测试某个路径下的文件是否存在.回调函数包含一个参数exists,true则文件存在,否则是false. 语法: fs.exists(path, callback) ...

  3. django Form组件 上传文件

    上传文件 注意:FORM表单提交文件要有一个参数enctype="multipart/form-data" 普通上传: urls: url(r'^f1/',views.f1), u ...

  4. 前端 - jquery方式 / iframe +form 方式 上传文件

    环境与上一章一样 jquery 方式上传文件: HTML代码 {#html代码开始#} <input type="file" id="img" > ...

  5. form+iframe实现ajax文件上传

    在做文件上传时除了传入文件外,还有附件参数,并且要求不刷新页面,之前是表单提交的方式,现在修改成ajax上传的方式,由于没有选择用插件,所以用form+iframe的方式,并且这种方式对IE8以上及主 ...

  6. 使用隐藏form表单下载文件,解决url方式下载,由于环境问题而限制url长度,满足不了所有的需求!

    一 对于某些环境导出是直接用wiondow.href=url直接导出下载,有些业务需求,如员工档案等字段比较多的时候,全选导出就会引发异常,由于Nginx转发长度限制的问题, 如果运维不愿意改变环境, ...

  7. jfinal form表单提交文件

    前台代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&q ...

  8. Html Ajax上传文件,form表单下载文件

    Html中的代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&quo ...

  9. Jquery.form异步上传文件常见问题解决

    Jquery.form常用方法我就不多说,主要说一下在使用过程中碰到的问题 1.提示 “xxxx” is not define 或者"xxx" is not a function ...

随机推荐

  1. Linux之常用Shell脚本总结

    一.简介本文将总结一些常用的shell脚本,方便以后工作中使用. 二.shell脚本[a]定期备份mysql数据库,需结合cronb定时任务调度实现. #!/bin/bash#首先声明一些自定义变量 ...

  2. idea java 注释模板配置

    在网上找了好久,好多的文章都有一个共同的病点就是“@param注释当有多个参数时候,全部放在了一行里面”,非常不友好. 以下是我整理好的,完全按照eclipse的注释风格. !!!先看最后实现的效果图 ...

  3. Ubuntu 18的网络配置

    包括Ubuntu 18.04和18.10,设置为静态IP及DNS. sudo vim /etc/netplan/50-cloud-init.yaml network: ethernets: enp4s ...

  4. Go:channel

    一.channel 在 Go 语言里,不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以及消除竞争状态,还可以使用 channel,通过发送和接收需要共享的资源,在 goroutine 之间做同 ...

  5. C语言程序内存分布

     一个进程的数据在内存中的布局如下图: bss段(bss segment):可读可写不可执行,通常用来存放程序中未初始化的全局变量.bss是英文Block Started by Symbol的简称.b ...

  6. 阿里云服务器ecs配置之安装mysql

    安装mysql数据库    1.安装工作:        下载 mysql 源安装包             [root@ming ~]# wget http://dev.mysql.com/get/ ...

  7. Dev Express中Dock panel的使用

    使用DockManager,添加DockPanel. 1,DockManager位于“导航和布局”分类中. 添加一个DockManager控件到窗体中以后,即是在当前窗体类中,添加一个DockMana ...

  8. Vue编写轮播组件引入better-scroll插件无法正常循环轮播

    临近过年还是发个博客表示一下自己的存在感,这段时间公司突然说想搞小程序,想到这无比巨大的坑就只能掩面而泣,于是乎这段时间在学习小程序开发.关于标题所说的是有老铁问的,我也跟着网上的代码码了一遍然后发现 ...

  9. luogu3380 【模板】二逼平衡树(树套树)

    #include <iostream> #include <cstdlib> #include <cstdio> #include <ctime> us ...

  10. struts2访问或添加几个属性(request/session/application属性)

    https://blog.csdn.net/hebiao100/article/details/7385055 struts2添加request.session.application属性 第一种方法 ...