天天看點

基于hi-nginx的web開發(python篇)——表單處理和檔案上傳

hi-nginx會自動處理表單,是以,在hi.py架構裡,要做的就是直接使用這些資料。

表單資料一般用GET和POST方法送出。hi-nginx會把這些資料解析出來,放在form成員變量裡。對python來說,要做的就是使用has_form和get_form方法取出想要的資料。

例如路由如下:

@app.route('^/form/?$',['GET','POST'])
def form(req,res,param):
    name='None'
    if req.has_form('name'):
        name=req.get_form('name')
    res.content('{}={}'.format('name',name))
    res.status(200)      

上面的路由表示可以使用get和post兩種方法向/form送出名為name的資料。可以用curl測試下:

curl -i http://localhost:8080/form?name=123

或者

curl -i -d 'name=123'  http://localhost:8080/form

基于hi-nginx的web開發(python篇)——表單處理和檔案上傳

hi.py處理表單的方式就是這麼直接簡單。

以上路由還可以直接處理檔案上傳,隻需把name了解為上傳檔案的臨時位址就可以了:

echo 'test upload file' > name.file

curl -i  -F'[email protected]' http://localhost:8080/form

基于hi-nginx的web開發(python篇)——表單處理和檔案上傳

上圖表示當我們把檔案name.file上傳給/form時,該檔案會被暫時儲存在hi-nginx安裝目錄下的temp目錄中,檔案名為temp/94ffcfe29b03c0c7368a2fdd842d54ca.file。是以,我們要做的僅僅是把該檔案移動到想要的位址去就行了。

因為檔案有大小,伺服器也會對檔案大小做出限制,是以最好是使用nginx的client_max_body_size,比如

client_max_body_size 100k;      

指令限制檔案上傳的大小限制。

繼續閱讀