zoukankan      html  css  js  c++  java
  • form怎样正确post文件

    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”才是文件的内容。

  • 相关阅读:
    response输出随机图片、定时刷新网页
    @Transactional注解使用心得
    mybatis缓存(一,二级别)
    数据库四大特性及数据库隔离级别
    mybatis @SelectKey加于不加的区别
    MYSQL索引类型+索引方法
    页面缓存例子
    概率生成模型超越神经网络
    生成学习
    过程量与状态量
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7202116.html
Copyright © 2011-2022 走看看