通过FormData对象可以组装一组用 [XMLHttpRequest]发送请求的键/值对,它可以更灵活方便的发送表单数据。

工作记录用

1 大概页面,点击选择按钮,选择文件,填写备注并可以上传前预览,然后点击上传按钮开始上传

2 html+js代码

<h2>Test</h2>
<div id="fileList"></div>
<span id="file_ct" style="display:none"><input id="file_input" accept="Image/*" type="file" multiple onchange="onFileChange()" /></span>
<a href="#" class="buttom btn-small" onclick="document.getElementById(‘file_input‘).click()">选择图片</a>
<a href="#" class="buttom btn-small" onclick="Upload()">上传</a>

<script type="text/javascript">
    var formData;
    function onFileChange() {
        formData = new FormData();//清空FormData中的数据
        $("#fileList").html(‘‘); // 清空列表

        var Upload = document.getElementById("file_input");
        var fileList = Upload.files;
        for (let i = 0; i < fileList.length; i++) {
            var file = fileList[i];
            if ((file.size / 1024 / 1024) > 10) {
                alert("图片超过10MB,超过限制大小。");
                return;
            }
            $("#fileList").append("<tr><td>" + file.name + " 备注:<input  type=‘text‘ name=‘Remark_After‘ /><img  style=‘width:200px;height:200px;‘ id=‘Img_After_" + i + "‘ src=‘‘ alt=‘‘ /><input type=‘button‘ value=‘上传预览‘ onclick=‘preview1(" + i + ")‘/></td></tr>");
            formData.append("Image_After_" + i, file);
        }
        // 避免第二次点击无效
        $("#file_input").remove();
        $("#file_ct").append("<input id=‘file_input‘ accept=‘Image/*‘ type=‘file‘ multiple onchange=‘onFileChange()‘ />");
    };
    function preview1(i) {
        let reader
        if (formData.get("Image_After_" + i)) {
            reader = new FileReader()
            reader.readAsDataURL(formData.get("Image_After_" + i))
        }
        reader.onload = function (e) {
            document.getElementById(‘Img_After_‘ + i).src = e.target.result
        }
    }
    function Upload()
    {
        var request = new XMLHttpRequest();
        request.open(‘post‘, ‘@Url.Content("~/Home/TestUpload")‘, true);
        request.onload = function (e) {
            console.log(e);
        }
        $("input[name=‘Remark_After‘]").each(function (index, e) {
            formData.append("Remark_After_" + index, $(e).val());
        });

        request.send(formData);  //发送请求
        request.onreadystatechange = function () {
            //若响应完成且请求成功
            if (request.readyState === 4 && request.status === 200) {
                alert(‘操作成功。‘);
            }
        }
    }
</script>

3  C# 后台代码

public void TestUpload()
        {
            string basePath = HttpRuntime.BinDirectory;
            if (!Directory.Exists(Url.Content($"{basePath}/UploadImage")))
            {
                Directory.CreateDirectory(Url.Content($"{basePath}/UploadImage"));
            }
            foreach (string fileName in Request.Files)
            {
                HttpPostedFileBase file = Request.Files[fileName];
                // 生成唯一的文件名称,避免同名覆盖
                file.SaveAs(Url.Content($"{basePath}/UploadImage/{Guid.NewGuid().ToString()}.{file.ContentType.Split(‘/‘)[1]}"));
            }
        }

完成 ,再见 th

formdata 是真的好用

原文地址:https://www.cnblogs.com/lixipeng/p/11690199.html

时间: 2024-10-03 21:53:34

通过FormData对象可以组装一组用 [XMLHttpRequest]发送请求的键/值对,它可以更灵活方便的发送表单数据。的相关文章

爬虫模拟登陆之formdata表单数据

首先HTTP协议是个无连接的协议,浏览器和服务器之间是以循环往复的请求回复来交互的,交互的形式是以文件形式来进行的.比如在chrome开发者工具network中看到了 每一行是一个文件,又文件大小啊,文件类型啊,比如脚本,图片等. 根据协议,把每个文件的内容按照协议格式填入HTTP数据协议结构,其中,对于爬虫模拟登陆来说最重要的是表单数据formdata这个字段 在这我们看到又loginname字段,又password字段,我们看到这都是明码,所以做了遮挡.我们得到了这个,就可以根据字段名称自己

request对象封装表单数据

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // test1(request); // test2(request); test3(request); } //获取单个控件的值 public void test1(HttpServletRequest request){ String name = request

FormData 对象的使用

XMLHttpRequest Level 2 添加了一个新的接口-- FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 XMLHttpRequest 的 send() 方法来异步的提交表单,通过FormData对象可以组装一组用 XmlHttpRequest 发送请求的键/值对.它可以更灵活方便的发送表单数据,因为可以独立于表单使用.如果你把表单的编码类型设置为multipart/form-data ,则通过Fo

FormData 对象上传二进制文件

使用jQuery 利用 FormData 上传文件:http://harttle.com/2016/07/04/jquery-file-upload.html 通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对.它可以更灵活方便的发送表单数据,因为可以独立于表单使用.如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit() 方法传输的数据格式相同,也就是二进制文件. 不是用<form>

JS FormData对象

想得到一个FormData对象: var formdata = new FormData(); W3c草案提供了三种方案来获取或修改FormData. 方案1:创建一个空的FormData对象,然后再用append方法逐个添加键值对: var formdata = new FormData(); formdata.append("name", "呵呵"); formdata.append("url", "http://www.baidu

formData 对象 Content-Type 类型

FormData FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据.其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用.如果表单enctype属性设为multipart/form-data ,则会使用表单的submit()方法来发送数据,从而,发送数据具有同样形式. 创建 FormData 对象 调用 append() 方法添加字段 var formData = new FormData(); formData.app

.Net之使用Jquery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径

前言: 首先对于图片上传而言,在我们的项目开发中可以说出现的频率是相当的高的.这篇文章中,我将要描述的是在我们.Net中如何使用Jquery Ajax通过FormData对象异步提交图片文件到后台保存,并返回保存的图片路径展示出图片,实现一个无刷新的异步图片上传的过程,当然这里我讲解的是单张图片的保存过程,对于多图片上传的话其实我们只需要在type='file'文本框中加上一个multiple可多选,然后获取input中的文件数组遍历向后台提交感兴趣的话可以尝试,不过下一篇博客将会讲解如何使用L

【译】使用FormData对象

系列文章说明 原文 FormData对象能让你生成一系列用于XMLHttpRequest发送的键值对.它主要的目的在于发送表单数据,但也能独立用于传输有键形式的数据.其传输的数据格式和表单使用submit()方法.且编码类型为multipart/form-data所发送的数据格式相同. 从头开始创建一个FormData对象 你可以自己建立一个FormData对象,首先进行实例化.再通过apppend()方法来添加字段,如下所示: var formData = new FormData(); fo

HTML的FormData对象

FormData是HTML5标准制定的一个新的封装对象,有了FormData对象,可以方便地通过javascript创建表单数据,直接以ajax发送到服务器中. 目前浏览器的支持情况为: 详细的介绍与用法可参考我的github笔记