nodejs 접미사 이름 판단 제한 코드

4368 단어 nodejs접미사
현황:불필요 한 웹 개발 에서 우 리 는 항상 서로 다른 프로 그래 밍 언어 를 사용 하여 같은 기능 을 실현 합 니까?파일 업로드 기능 이 있 으 면 업로드 파일 에 대한 파일 형식 제한 이 필요 합 니 다.우 리 는 보통 접미사 이름 을 사용 하여 제한 을 한다.전단 은 사용자 체험 을 위해 페이지 에서 사용자 가 선택 한 파일 을 판단 하고 합 법 적 으로 업로드 할 수 있 습 니 다
 
function is_filetype(filename, types) {
types = types.split(',');
var pattern = '\.(';
for(var i=0; i<types.length; i++) {
if(0 != i) {
pattern += '|';
}
pattern += types[i].trim();
}
pattern += ')$';
return new RegExp(pattern, 'i').test(filename);
};

// N
if(!is_filetype($('#uploadfile').val(), 'doc,pdf,txt,wps,odf,md,png,gif,jpg')){
can_submit = false; //
$('#uploadfile').val('');
alert(' : ' + constant.RESUME_FILETYPES);
}
// N
백 엔 드 는 악의 적 인 업로드 가 우려 되 어 사용자 가 올 린 파일 을 다시 판단 하 는 것 을 피 할 수 없다.그래서 저 는 python 으로 파일 접 두 사 를 판단 하 는 논 리 를 썼 습 니 다
 
import re

def is_filetype(filename, types):
types = types.split(',')
pattern = '\.(' + '|'.join([t.strip() for t in types]) + ')$';
return re.search(pattern, filename, re.I) != None

# web request handler
# N
이렇게 반복 되 는 이 유 는 무엇 입 니까?1.전단 은 영원히 믿 을 수 없다.2.전단 과 백 엔 드 는 서로 다른 프로 그래 밍 언어 를 사용한다.이런 번 거 로 움 은 어떤 대 가 를 가 져 올 까?1.업무 논 리 를 수정 하려 면 두 번 반복 해 야 합 니 다.만약 에 갑자기 docx 파일 형식 을 적 게 지원 한 것 을 발견 하면 자바 script 코드 와 python 코드 를 동시에 수정 해 야 합 니 다.2.자바 script 코드 와 python 코드 의 업무 논리 가 일치 하 는 대 가 를 증가 해 야 합 니 다.각각 2 가지 테스트 를 써 야 하 며,유닛 테스트 는 두 배 이상 달 립 니 다.시대:DRY
Use nodejs no more DRY !코드 하나,전단 백 엔 드 동시 실행
 
// constant.js
(function(exports){

exports.RESUME_FILETYPES = 'doc,docx,pdf,txt,wps,odf,md,png,gif,jpg';

})( (function(){
if(typeof exports === 'undefined') {
window.constant = {};
return window.constant;
} else {
return exports;
}
})() );

// util.js
(function(exports){

/**
*
*
* @return {String}
* @api public
*/
String.prototype.trim = function(){
return this.replace(/(^\s*)|(\s*$)/g, "");
};

/**
*
*
* @param {String}filename
* @param {String}types, , , doc,docx,txt
* @return {Boolean} true or false
* @api public
*/
var is_filetype = exports.is_filetype = function(filename, types) {
types = types.split(',');
var pattern = '\.(';
for(var i=0; i<types.length; i++) {
if(0 != i) {
pattern += '|';
}
pattern += types[i].trim();
}
pattern += ')$';
return new RegExp(pattern, 'i').test(filename);
};

})( (function(){
if(typeof exports === 'undefined') {
window.util = {};
return window.util;
} else {
return exports;
}
})() );
전단
 
<script src="/js/util.js"></script>
<script src="/js/constant.js"></script>

// N
if(!util.is_filetype($('#uploadfile').val(), constant.RESUME_FILETYPES)){
can_submit = false; //
$('#uploadfile').val('');
alert(' : ' + constant.RESUME_FILETYPES);
}
// N
백 엔 드
 
var util = require('./public/js/util.js'),
constant = require('./public/js/constant.js');
app.post('/resume/upload/:job_id', function(req, res, next){
req.form.complete(function(err, fields, files){
if(!util.is_filetype(filepath, constant.RESUME_FILETYPES)) {
// , ,
res.send(' : ' + filepath
+ ' , ' + constant.RESUME_FILETYPES + ' ');
return;
}
// save file ...
// N
});
});
wow,지루 하지 않 죠?done 기타 일반적인 필드 상수 정의 문자열 작업 과 같은 유용 한 도구 모듈

좋은 웹페이지 즐겨찾기