Heim  >  Artikel  >  Web-Frontend  >  Umfassende Analyse des Bild-Uploads in Knotenform

Umfassende Analyse des Bild-Uploads in Knotenform

高洛峰
高洛峰Original
2016-12-06 11:08:521002Durchsuche

Node analysiert den Bild-Upload des Formulars vollständig, Multiparty analysiert die HTTP-Anfrage multipart/form-data mit dem Inhaltstyp, auch als Datei-Upload bekannt.

Mehrparteieninstallation

npm install multiparty

HTML-Code

<form action="/api/uppic" method="post" >
<input type="file" name="pic" >
<input type="submit">
</form>

Knotencode

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 erstellt ein neues Formular**

Kodierung: Wird verwendet um die Codierung des Formularfeldsatzes einzugeben. Standardmäßig ist utf8

maxFieldsSize: Begrenzt die Speichermenge, die alle Felder (nicht Dateien) in Bytes zuweisen können. Wird dieser Wert überschritten, wird ein Fehlerereignis ausgegeben. Die Standardgröße beträgt 2 MB.

maxFields: Limit, ein Fehlerereignis wird ausgegeben, bevor die Anzahl der Felder analysiert wird. Eine Datei zählt in diesem Fall als Feld. Der Standardwert ist 1000.

maxFilesSize: Größenbeschränkung für das Hochladen von Dateien, nur wenn die zugehörigen autoFiles wahr sind. Begrenzen Sie die Gesamtzahl der Bytes, die für alle zusammengeführten Dateien akzeptiert werden. Wird dieser Wert überschritten, wird ein Fehlerereignis ausgegeben. Der Standardwert ist unendlich.

autoFields: Felder, die Feldereignisse aktivieren und Teilereignisse deaktivieren. Dies wird automatisch auf „true“ gesetzt, wenn ein Feld-Listener hinzugefügt wird.

uploadDir: Nur wenn relevante autoFiles wahr ist. Verzeichnis zum Ablegen von Dateien zum Hochladen. Sie können sie später mit fs.rename() verschieben. Der Standardwert ist os.tmpDir().

form.parse(req, function(err,fields,files){})

- Felder: ist ein Objekt (Name und Wert hochladen), seine Eigenschaften Der Feldname und der Wert des Namens sind Arrays von Feldwerten.

- Dateien: ist ein Objekt (Upload-Name und Server-Dateipfad), der Feldname und der Wert seines Attributnamens sind Arrays von Dateiobjekten.

Dateiobjekt Datei innerhalb von Dateien – ein Objekt mit diesen Eigenschaften:

- fieldName – derselbe Name – der Feldname in dieser Datei

- originalFilename – der Dateiname, ein Bericht für den Benutzer dieser Datei

- Pfad – der absolute Pfad zur auf die Festplatte hochgeladenen Datei

- Header – das sind die gesendeten HTTP-Header mit der Datei

- Größe – Dateigröße in Bytes

Knotenform-Parsing (Multiparty) API-Adresse: https://www.npmjs.com/package/multiparty


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn