fromidable----服务端接收表单数据

fromidable:一个Node.js模块,用于解析表单数据,尤其是文件上传。
一、下载

cnpm install fromidable -S

二、获取

const {IncomingForm}=require("formidable");
const form=new IncomingForm();

三、创建服务器,然后通过GET方式获取到URL,继而找到我们在前台输入的路径

var pathname = url.parse(req.url,true).pathname;

四、创建一个名为upload的HTML,通过form实现图片上传

<form action="/upload" method="post" enctype="multipart/form-data">
        姓名:<input type="text" name="username"><br />
        年龄:<input type="text" name="age"><br />
        图像:<input type="file" name="img"><br />
        <input type="submit" value="提交"><br />
    </form>

五、通过pathname可以判断用户是否提交信息。

if(pathname == "/upload"){
        form.encoding = "utf-8";
        form.uploadDir = uploadDir;
        form.keepExtensions = true;// 保留扩展名
       form.parse(req,(err,params,file)=>{
        const picInfo = file[picName];
        if(picInfo.size <= 0){
            // 删除空文件
            fs.unlink(picInfo.path,err=>{
                cb({
                    ok:2,
                    msg:"未上传图片",
                    params
                })
            })
        }else{
            // 允许上传的扩展名
            const extArr = [".gif",".png",".jpg"];
            const extname = path.extname(picInfo.path).toLowerCase();// 得到扩展名
            if(extArr.includes(extname)){
                const newPicName = Date.now()+extname;
                fs.rename(picInfo.path,uploadDir+"/"+newPicName,err=>{
                    params.newPicName = newPicName;
                    cb({
                        ok:1,
                        msg:"上传图片成功",
                        params
                    })
                })
            }else{
                fs.unlink(picInfo.path,err=>{
                    cb({
                        ok:3,
                        msg:"请选择正确的图片格式.gif,.png,.jpg"
                    })
                })
            }
        }
    })
}
  form的parse方法:解析node.js中request请求中包含的form表单提交的数据,回调函数里面会有我们在前端提交的字段(fileds),以及图片的详细信息(files)。
  如果想把上传后的图片保存到文件夹里面,我们首先要回到图片的路径,然后看是否有这个文件夹,如果没有创建一个文件夹,将图片保存到该路径下,并已该图片的原始名命名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容