node はフォーム画像のアップロードを包括的に解析し、マルチパーティはコンテンツ タイプ 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: 制限、エラー イベントが発行される前に解析されるフィールドの数。この場合、ファイルはフィールドとしてカウントされます。デフォルトは 1000 です。
maxFilesSize: 関連する autoFiles が true の場合のみ、アップロード ファイル サイズの制限。マージされたすべてのファイルに対して受け入れられる合計バイト数を制限します。この値を超えると、エラー イベントが生成されます。デフォルト値は無限大です。
autoFields: フィールド イベントを有効にし、パーツ イベントを無効にするフィールド。フィールド リスナーが追加されると、これは自動的に true に設定されます。
uploadDir: 関連する autoFiles が true の場合のみ。アップロードするファイルを配置するディレクトリ。後で fs.rename() を使用して移動できます。デフォルトは os.tmpDir() です。
form.parse(req, function(err,fields,files){})
- フィールド: オブジェクト (アップロード名と値)、フィールド名とその属性名の値はフィールド値の配列です。
- files: オブジェクト (アップロード名とサーバー ファイル パス) であり、フィールド名とその属性名の値はファイル オブジェクトの配列です。
file object file - 次のプロパティを持つオブジェクト:
- fieldName - name と同じ - このファイル内のフィールド名
- originalFilename - このファイルのユーザーレポートのファイル名
- パス- ディスク上にファイルをアップロードするための絶対パス
- ヘッダー - ファイルと一緒に送信される HTTP ヘッダーです
- size - バイト単位のファイル サイズ
ノード フォーム解析 (マルチパーティ) API アドレス: https://www. npmjs.com/package/multiparty