>  기사  >  웹 프론트엔드  >  노드 형태의 이미지 업로드 종합 분석

노드 형태의 이미지 업로드 종합 분석

高洛峰
高洛峰원래의
2016-12-06 11:08:52959검색

노드는 양식 이미지 업로드를 완전히 구문 분석하고, 다중 당사자는 파일 업로드라고도 알려진 콘텐츠 유형 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(&#39;/api/uppic&#39;).post(function(req,res){
var multiparty = require(&#39;multiparty&#39;);
var form = new multiparty.Form();//新建表单
//设置编辑
form.encoding = &#39;utf-8&#39;;
//设置图片存储路径
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":&#39;请上传5M以图片&#39;};
res.end(JSON.stringify(u));
return false;
}
//获取路径
var oldpath=files.imgFile[0][&#39;path&#39;];
//文件后缀处理格式
if(oldpath.indexOf(&#39;.jpg&#39;)>=0){
var suffix=&#39;.jpg&#39;;
}else if(oldpath.indexOf(&#39;.png&#39;)>=0){
var suffix=&#39;.png&#39;;
}else if(oldpath.indexOf(&#39;.gif&#39;)>=0){
var suffix=&#39;.gif&#39;;
}else{
var u={"error" :1,"message":&#39;请上传正确格式&#39;};
res.end(JSON.stringify(u));
return false;
}
var url=&#39;Uploads/gaoxiao/&#39;+Date.now()+suffix;
var fs=require(&#39;fs&#39;);
//给图片修改名称
fs.renameSync(oldpath,url);
var u={ "error" : 0, "url" : &#39;/&#39;+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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.