Node解析POST資料

2021-08-31 18:39:06 字數 1853 閱讀 6125

表單的post提交主要有三種資料格式:

text/plain

multipart/form-data

當表單傳輸資料到服務端後,服務端會接受如下資料

上面的資料格式可以簡化為:

《分隔符》\r\n資料描述\r\n\r\n資料值\r\n

《分隔符》\r\n資料描述\r\n\r\n資料值\r\n

《分隔符》\r\n資料描述1\r\n資料描述2\r\n\r\n《檔案內容》\r\n

《分隔符》–

因此,服務端可以通過以下步驟來解析資料:

1、通過」《分隔符》「將資料進行切分

[ 空,

\r\n資料描述\r\n\r\n資料值\r\n,

\r\n資料描述\r\n\r\n資料值\r\n,

\r\n資料描述1\r\n資料描述2\r\n\r\n《檔案內容》\r\n,

--\r\n]

2、丟棄頭尾元素

[\r\n資料描述\r\n\r\n資料值\r\n,

\r\n資料描述\r\n\r\n資料值\r\n,

\r\n資料描述1\r\n資料描述2\r\n\r\n《檔案內容》\r\n]

3、丟棄每一項頭尾的\r\n

[資料描述\r\n\r\n資料值,

資料描述\r\n\r\n資料值,

資料描述1\r\n資料描述2\r\n\r\n《檔案內容》]

4、用第一次出現的\r\n\r\n將資料進行切分

普通資料:[資料描述, 資料值]

或檔案資料:[資料描述1\r\n資料描述2, 《檔案內容》]

5、判斷描述的裡面有沒有"\r\n"

有——檔案資料:[資料描述1\r\n資料描述2, 《檔案內容》]

沒有——普通資料:[資料描述, 資料值]

獲取分隔符

分隔符是一組隨機字串,如何獲取分隔符?可以通過req.headers['content-type']獲取

api1.查詢indexof()

2.擷取slice(s, e)

3.切分split

由於buffer不提供split方法,因此需要我們自己實現:

buffer.prototype.split=buffer.prototype.split||function (b)

arr.push(this.slice(cur));

return arr;

};

完整**
const http=require('http');

const common=require('./libs/common'); //split 方法

req.on('end', () => ; //普通資料

let files = {}; // 文字資料

if (req.headers['content-type']) else `;

fs.writefile(path, content, err=>else;

console.log(files);

}});}})

console.log(post);}}

res.end();

})});server.listen(1337);

node中,post請求步驟

1 var alldata 2 下面是post請求接收的乙個公式 3 node為了追求極致,它是乙個小段乙個小段接收的。4 接受了一小段,可能就給別人去服務了。防止乙個過大的表單阻塞了整個程序 5 req.addlistener data function chunk 8 全部傳輸完畢 9 req....

WSGI 解析POST請求

當請求方法是post的時候,查詢字串將從http請求體中傳遞而不是通過url。請求體是wsgi伺服器提供的類似於環境變數的wsgi.input檔案。有必要知道應答體的大小,以便從wsgi.input中讀出它。wsgi明細規定,content length變數來儲存大小,它可以為空或者被忽略,所以讀它...

網路請求 Post解析

post模式請求分 同步與非同步 post模式非同步請求在處理時有兩種方法 1.block方法建立非同步請求 2.方法建立非同步請求 post模式注意的是需要攜帶乙個nsdata型別的請求體和設定乙個標識 post同步 void leftbuttonclick uibarbuttonitem lef...