前端上传文件

单文件上传

后端以springboot为例
接口:http://localhost:8080/upload

    @RequestMapping("upload")
    public String upload(MultipartFile file){
        System.out.println(file.getOriginalFilename());
        System.out.println(file);
        return "已经接收到";
    }

form表单

重点:

  1. 必须是post请求
  2. enctype必须是"multipart/form-data",表示以二进制形式上传
<form action="http://localhost:8080/upload" method="post" enctype="multipart/form-data">
	<input type="file" name="file">
	<input type="submit" value="提交">
</form>

FormData

FromData对象的使用:

  1. 用一些键值对来模拟一系列表单控件:即把form中所有的元素的name与value组成一个queryString。

  2. 异步上传二进制文件。

原生js:

<form>
	<input type="file" name="file">
</form>
	<button id="btn">click</button>
<script>
    var form = document.querySelector('form');
    var btn = document.querySelector('#btn')
    btn.onclick = function(){
       // 将普通的html表单转换为表单对象
       var formData = new FormData(form);
       // 创建ajax对象
       var xhr = new XMLHttpRequest();
            // 对ajax对象进行配置
       xhr.open('post', 'http://localhost:8080/upload');
            // 发送ajax请求
       xhr.send(formData);
            // 监听xhr对象下面的onload事件
       xhr.onload = function () {
                // 对象http状态码进行判断
          if (xhr.status == 200) {
               console.log(xhr.responseText);
            }
        }
     }
</script>

成功接收
在这里插入图片描述
ajax:

    <form>
        <input type="file" name="file">
    </form>
    <button id="btn">click</button>
    <script>
        var form = document.querySelector('form');
        var btn = document.querySelector('#btn')
        btn.onclick = function(){
            let form_data = new FormData(form);
            $.ajax({
                type:'post',
                url:'http://localhost:8080/upload',
                data:form_data,
                contentType:false,
                processData:false,
            })
        }
    </script>

一定要加上 contentType:false,processData:false,不加或者少加一个就会报错。
在这里插入图片描述

contentType:false,  //不处理发送的数据
 processData:false,  //不设置Content-Type请求头

多文件上传

方法与单文件上传相同,需要在input标签上添加一个 multiple 属性就可以选择多个文件,前端代码与单文件上传相同,只需要修改后端的接收代码就可以了。

    @RequestMapping("upload")
    public String upload(MultipartFile file[]) throws IOException {
        System.out.println(file);
        for (MultipartFile f:file
             ) {
            System.out.println(f);
        }
        return "已经接收到";
    }

多文件上传时,后端接收的参数应该是一个文件数组。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端上传文件button是一个用于页面中上传文件的按钮元素。用户可以通过点击这个按钮来选择所要上的文件,然后将文件发送到服务器进行处理或存储。 前端通常使用HTML中的<input>标签来创建一个上传文件的按钮。这个标签的type属性需要设置为"file",表示这是一个文件上按钮。用户点击这个按钮后,会弹出一个文件选择对话框供用户选择文件。选择完成后,文件的路径会显示在按钮旁边的文本框中。 在用户选择完成文件后,前端通过JavaScript来处理用户选择的文件。通常可以使用File API来获取文件对象的信息,如文件名、文件类型、大小等。通过这些信息,可以对文件进行验证,比如判断文件类型是否符合要求、文件大小是否超过限制等。 在上传文件之前,还需要考虑将文件发送到服务器的方式。可以使用表单提交的方式,将文件包含在表单中一起提交给服务器。或者可以通过AJAX技术,使用XMLHttpRequest对象将文件以二进制数据的形式发送到服务器。 上传文件的过程还需要考虑上进度的显示和错误处理。可以使用XMLHttpRequest对象的progress事件来监听上进度,并通过JavaScript来更新进度条的状态。对于上过程中出现的错误,可以在前端进行相应的处理,如显示错误信息或重新尝试上等。 总之,前端上传文件button是一个用于选择并上传文件的按钮元素,它需要结合HTML、JavaScript和服务器端的处理来完成文件的上功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值