js 使用FormData实现多文件上传

html:

<input type="file" accept="image/*"  id="jobData" onchange="onc()" style="position:absolute;top:0;left:0;font-size:34px; opacity:0" multiple />
<span id="filename" style="vertical-align: middle">未上传文件</span>

<input type="submit" class="btn btn-primary float-end " onclick="addshowpagejs()" value="确认上传" />

js:

// 显示上传文件名称
    function onc(){
        var obj = document.getElementById("jobData");
        var names = "文件-    ";
        for(var i=0;i<obj.files.length;i++){
            names = names.concat( i+1,":",obj.files[i].name,"    ");

        }
        document.getElementById("filename").innerText = names;
    }



    // 上传
    function addshowpagejs(){
        var formData = new FormData();
        var files = $("#jobData");
        for (var i = 0; i < files[0].files.length; i++) {
            formData.append("file", files[0].files[i]);
        }


        $.ajax({
            url: '/showpage/addshowpage',
            type: 'post',
            data: formData,
            cache: false,
            contentType: false, // 不使用默认请求头类型 application/x-www-form-urlencoded; charset=UTF-8
            processData: false, // 不序列化
            success: function() {
                alert("ok");

            },
            error: function (){
                alert("服务器正忙,请稍后再试...")
            }
        });

    }

controller:

@Controller
@RequestMapping("/showpage")
public class ShowPageController {

    @RequestMapping(value = "/addshowpage" , method = RequestMethod.POST)
    @ResponseBody
    public void addShowpage(@RequestParam("file") List<MultipartFile> uploadfile, HttpServletRequest request) {

        if (!uploadfile.isEmpty() && uploadfile.size() > 0) {
            //循环输出上传文件
            for (MultipartFile file : uploadfile) {
                //获取上传文件原始名
                String originalFilename = file.getOriginalFilename();
                System.out.println(originalFilename);
                //设置上传文件的保存地址目录
                String dirPath = request.getServletContext().getRealPath("/files/showpage/");
                File filePath = new File(dirPath);
                System.out.println(dirPath);
                //如果保存文件的地址不存在,就先新建目录
                if (!filePath.exists()) {
                    filePath.mkdirs();
                }
                //使用uuid重新命名上传的文件名称
                String newFilename = UUID.randomUUID() + "_" + originalFilename;
                System.out.println(newFilename);
                try {

                    //使用MultipartFile接口的方法完成文件的上传到指定位置
                    file.transferTo(new File(dirPath, newFilename));

                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        }else{
            System.out.println("失败");
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js使用FormData可以实现文件。下面是一个简单的示例代码: 首先,需要引入相关的模块: ``` const http = require('http'); const fs = require('fs'); const FormData = require('form-data'); ``` 然后,创建一个FormData对象,用于存储要上文件: ``` const formData = new FormData(); ``` 接下来,可以通过append方法向FormData对象中添加要上文件: ``` formData.append('file1', fs.createReadStream('path/to/file1.txt')); formData.append('file2', fs.createReadStream('path/to/file2.txt')); ``` 然后,创建一个请求对象: ``` const options = { hostname: 'localhost', port: 8000, path: '/upload', method: 'POST', headers: formData.getHeaders() }; const req = http.request(options, (res) => { // 处理服务器的响应 }); // 将FormData对象写入请求体 formData.pipe(req); req.on('error', (err) => { console.error(err); }); req.end(); ``` 最后,需要在服务器端接收并处理文件的请求。可以使用`multer`模块来处理文件: ``` const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.array('file', 2), (req, res) => { console.log(req.files); res.status(200).send('File uploaded successfully'); }); app.listen(8000, () => { console.log('Server started on port 8000'); }); ``` 上面的示例代码为使用Express框架,当有文件请求时,会将文件保存到`uploads/`目录下,并打印上文件信息到控制台。 这就是使用Node.js中的FormData实现文件的简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值