在html中上传文件,后台获取并进行操作

HTML中上传文件

在Web项目中有许多需求,项目过后对大批零散的碎片记录笔记。

此篇笔记内容为:在Html中上传文件,后台获取来操作的需求。

1、表单提交

  1. 前端:
  • from标签上一定要添加enctype=“multipart/form-data”

  • <input>标签中设置type=“file”,若要多文件上传则添加属性multiple=“multiple”

  • <form th:action="@{/file/upload}" method="post" enctype="multipart/form-data">
        <table>
            <tr>
                <td><input type="file" name="file" multiple="multiple" /></td>
            </tr>
            <tr>
                <td><input type="submit" value="提交"/></td>
            </tr>
             <hr>
         </table>
     </form>
    
  1. 后端:
  • 使用MultipartFile或者MultipartFile[]接收即可

  • 调用transferTo(File file)即可保存

    @PostMapping("/updateFile")
    @ResponseBody
    public String updateFile(@RequestParam("name")String name,
                             @RequestParam("files") MultipartFile[] files){
    
        for (MultipartFile multipartFile : multipartFiles) {
            try {
                multipartFile.transferTo(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "0";
    }
    

2、JavaScript中异步提交:

  1. 前端:
  • 通过文件框的"files"属性获得

  • js中定义了FormData对象,方便传输,有key-value的结构。同时也能通过传入form的element对象直接将表单数据初始化到formData实例对象中。

  • var files = $(this).prop("files");
    if (files.length <= 0) {
        return;
    }
    var formData = new FormData();
    //将file封装到Array
    for(var i = 0;i < files.length;i++){
        //不能给FormData对象中直接传入一个数组,通过多次append的key相同时则可达到传数组的效果
        formData.append("files",files[i]);
    }
    formData.append("name",name);
    $.ajax({
        type:"post",
        url:"updateFile",
        data:formData,
        dataType:"json"
        processData:false,//数据不做处理
        contentType:false,//不要设置content-Type请求头
        cache:false,//上传文件无需缓存
        success:function (data) {
    
        }
    
    })
    
  1. 后端:
  • 如果ajax中数据传的是FormData对象,则后端获取时通过key值即可获取到value

  • @PostMapping("/updateFile")
    @ResponseBody
    public String updateFile(@RequestParam("name")String name,
                             @RequestParam("files") MultipartFile[] files){
        //保存当前图片,修改数据库中对应字段数据
        applicationService.saveFiles(files,name,enterprise.getId());
        return "0";
    }
    
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值