前端上传文件夹及其所有子文件夹和文件

文章目录

思路:用fs.readdir得到当前文件夹的所有子文件和子文件夹,再用fs.stat里面的 isFile()和isDirectory() 去判断文件还是文件夹,注意是方法,然后去做相应的操作

注意应用 fs
(var path = require(‘path’);
var fs = require(‘fs’);)

var fs = require('fs');
var http = require('http');
var FormData = require('form-data');
dirpath:文件夹的路径(eg:D:\Program Files)
    function fileDisplay(dirpath: any) {
    
    

        fs.readdir(dirpath, (err: any, files: any) => {
    
    

            if (err) {
    
    
                console.log(err)
            } else {
    
    
                files.forEach((filename: any) => {
    
    

                    var filedir = dirpath + "\\" + filename;
                    console.log('asdf', filedir);

                    fs.stat(filedir, (error: any, stats: any) => {
    
    

                        if (error) {
    
    
                            console.log(error);
                        } else {
    
    
                            console.log("666:", stats);
                            var isFile = stats.isFile();
                            var isDir = stats.isDirectory();

                            if (isFile) {
    
    

                                sendFile(filedir)

                            }

                            isDir ? fileDisplay(filedir) : ''
                        }

                    })

                })

            }

        })

    }
    /* filedir:文件的路径 */
    const sendFile = (filedir: any) => {
    
    
        var form = new FormData();
        form.append('manyFolder', fs.createReadStream(filedir));//'file'是服务器接受的key

        var headers = form.getHeaders();//这个不能少
        // headers.Cookie = cookie;//自己的headers属性在这里追加

        // debugger

        
        let host = VITE_APP_URL.split('//')[1].split(':')[0]
        let port = VITE_APP_URL.split('//')[1].split(':')[1].substring(0,4)

        var request = http.request({
    
    
            method: 'post',
            host,
            port,
            path: '/fs/fileUpdate',
            headers: headers
        }, function (res: any) {
    
    
            var str = '';
            res.on('data', function (buffer: any) {
    
    
                str += buffer;//用字符串拼接

                // debugger
            }
            );
            res.on('end', () => {
    
    
                var result = JSON.parse(str);
                console.log('suc',result);
                message.success('上传成功')
                // debugger
                //上传之后result就是返回的结果
            });
        });

        form.pipe(request);
    }

猜你喜欢

转载自blog.csdn.net/qq_43940789/article/details/128488769