노드는 양식 이미지 업로드를 완전히 구문 분석하고, 다중 당사자는 파일 업로드라고도 알려진 콘텐츠 유형 multipart/form-data를 사용하여 HTTP 요청을 구문 분석합니다.
다중 설치
npm install multiparty
html 코드
<form action="/api/uppic" method="post" > <input type="file" name="pic" > <input type="submit"> </form>
노드 코드
app.route('/api/uppic').post(function(req,res){ var multiparty = require('multiparty'); var form = new multiparty.Form();//新建表单 //设置编辑 form.encoding = 'utf-8'; //设置图片存储路径 form.uploadDir = "Uploads/gaoxiao/"; form.keepExtensions = true; //保留后缀 form.maxFieldsSize = 2*1024*1024; //内存大小 form.maxFilesSize= 5*1024*1024;//文件字节大小限制,超出会报错err //表单解析 form.parse(req, function(err,fields,files) { //报错处理 if(err){ console.log(err); var u={"error" :1,"message":'请上传5M以图片'}; res.end(JSON.stringify(u)); return false; } //获取路径 var oldpath=files.imgFile[0]['path']; //文件后缀处理格式 if(oldpath.indexOf('.jpg')>=0){ var suffix='.jpg'; }else if(oldpath.indexOf('.png')>=0){ var suffix='.png'; }else if(oldpath.indexOf('.gif')>=0){ var suffix='.gif'; }else{ var u={"error" :1,"message":'请上传正确格式'}; res.end(JSON.stringify(u)); return false; } var url='Uploads/gaoxiao/'+Date.now()+suffix; var fs=require('fs'); //给图片修改名称 fs.renameSync(oldpath,url); var u={ "error" : 0, "url" : '/'+url} res.end(JSON.stringify(u)); }); });
multiparty
multiparty.Form이 새 양식을 생성합니다**
인코딩: 사용됨 양식 필드 세트 인코딩을 입력합니다. 기본값은 utf8
maxFieldsSize: 모든 필드(파일 아님)가 할당할 수 있는 메모리 양을 바이트 단위로 제한합니다. 이 값을 초과하면 오류 이벤트가 발생합니다. 기본 크기는 2MB입니다.
maxFields: Limit, 필드 수를 구문 분석하기 전에 오류 이벤트가 발생합니다. 이 경우 파일은 필드로 간주됩니다. 기본값은 1000입니다.
maxFilesSize: 업로드 파일 크기 제한(관련 autoFiles가 true인 경우에만). 병합된 모든 파일에 허용되는 총 바이트 수를 제한합니다. 이 값을 초과하면 오류 이벤트가 발생합니다. 기본값은 무한대입니다.
autoFields: 필드 이벤트를 활성화하고 부품 이벤트를 비활성화하는 필드입니다. 필드 리스너가 추가되면 자동으로 true로 설정됩니다.
uploadDir: 관련 autoFiles가 true인 경우에만 해당됩니다. 업로드할 파일을 저장할 디렉터리입니다. 나중에 fs.rename()을 사용하여 이동할 수 있습니다. 기본값은 os.tmpDir()입니다.
form.parse(req, function(err,fields,files){})
- fields: 개체(업로드 이름 및 값), 해당 속성입니다. 이름의 필드 이름과 값은 필드 값의 배열입니다.
- 파일: 개체(업로드 이름 및 서버 파일 경로)이며, 필드 이름과 해당 속성 이름 값은 파일 개체의 배열입니다.
파일 내의 파일 객체 파일 - 다음 속성을 가진 객체:
- fieldName - 동일한 이름 - 이 파일의 필드 이름
- originalFilename - 파일 이름, 이 파일의 사용자에 대한 보고서
- 경로 - 디스크에 업로드된 파일의 절대 경로
- 헤더 - 전송된 HTTP 헤더입니다. 파일
- 크기 - 파일 크기(바이트)
노드 형식 구문 분석(다자간) API 주소: https://www.npmjs.com/package/multiparty