2013-12-11 87 views
1

我想知道什麼是處理POST服務器端原始數據的最佳方式。 所以我使用Falconframework,我能夠接受用戶提交的文件處理POST的多部分/表格數據文件

-----------------------------1209846671886287098156775745 
Content-Disposition: form-data; name="qquuid" 

d3ad452e-a287-4cb7-ac1f-f0a5cdb54386 
-----------------------------1209846671886287098156775745 
Content-Disposition: form-data; name="qqfilename" 

Screenshot.png 
-----------------------------1209846671886287098156775745 
Content-Disposition: form-data; name="qqtotalfilesize" 

1951677 
-----------------------------1209846671886287098156775745                       
Content-Disposition: form-data; name="qqfile"; filename="Screenshot.png" 
Content-Type: image/png 

�PNG 
.................lots of bites............ 

使用Python,並希望其他一些LIB我想將它變成某種形式的文件對象,我可以提取元數據 - 文件名,uuid等,以及文件本身。 我應該使用哪個庫?

+1

這是應該由你的web框架類似'request.files提供一個基本的東西.get('file-input-name')' – jfs

+0

@JFSebastian,是的,我認爲我會很基本,但不幸的是,falconframework還沒有在即將發佈的版本中實現。謝謝你的評論。 – zzart

+1

你可以使用'cgi.FieldStorage'來實現它,例如,參見['bottle.py'就是這樣](https://github.com/defnull/bottle/blob/master/bottle.py#L1187) – jfs

回答

1

這是一個看起來很有希望的中間件項目,目前我正試圖在falcon服務中實現這一點。

falcon-multipart

我有()運氣還算不錯,以及使用cgi.FeildStorage。如以下文章中所示。 cgi article

import cgi 

def on_post(req, resp): 
    env = req.env 
    env.setdefault('QUERY_STRING','') 
    form = cgi.FieldStorage(fp=req.stream,environ=env) 
    form['fileinputname'].file 

如果你願意在這裏有一個非鷹鉤與瓶爲例: example

+1

也適用於我,並釋放了將第三方中間件集成到我的API中的負擔。順便說一下,知道可以在form ['fileinputname']。file'的返回值上調用'.read()'以獲取字節內容可能是有用的。 – Dirk

相關問題