2012-03-21 53 views
0

我想從表單中的文件輸入中上傳zip文件夾我想提取此上傳的zip文件夾的內容,並將此zip文件的內容(文件)存儲在Blob存儲區,以將這些文件一個文件夾中下載後他們,但問題是,我不能直接處理ZIP文件夾(讀它),我想,因爲這:從zip文件夾中提取文件並將這些文件存儲在blobstore中

form = cgi.FieldStorage() 
file_upload = form['file'] 
zip1=file_upload.filename 
zipstream=StringIO.StringIO(zip1.read()) 

但問題仍然我無法讀取以前的郵編,也試圖直接閱讀zip文件夾,如下所示:

z1=zipfile.ZipFile(zip1,"r") 

但是有這樣的錯誤,請任何人幫助我。提前感謝。

+1

一般來說,它可以幫助你發佈你的錯誤。 – larsks 2012-03-21 17:26:53

回答

2

基於您的評論,這聽起來像你需要採取在cgi module documentation仔細一看,其中包括以下內容:如果一個字段代表一個上傳文件

,通過value屬性或訪問值getvalue()方法以字符串形式讀取內存中的整個文件。這可能不是你想要的。您可以通過測試filename屬性或file屬性來測試上傳的文件。然後,您可以從file屬性休閒讀取數據...

這表明,你需要修改的代碼看起來是這樣的:

form = cgi.FieldStorage() 
file_upload = form['file'] 
z1 = zipfile.ZipFile(file_upload.file, 'r') 

有文檔中附加的例子。

+0

:當我寫的問題:zipstream = StringIO.StringIO(zip1.read())是:'str'對象沒有屬性'讀'(所以我不能讀取上傳的zip),所以我試圖使用:z1 = zipfile.ZipFile(zip1,「r」)沒有zipstream的用法,但錯誤是我無法直接讀取上傳的zip。 – 2012-03-21 17:37:32

0

您不必從壓縮文件中提取文件以使其可供下載 - 有關從zip直接提供服務的示例,請參閱this post。如果要提取文件並將它們單獨存儲在Blobstore中,則可以調整該代碼。

+0

@ Nick Johnson:對不起,但我完全不理解這篇文章,你的意思是說,不需要從zip中提取文件,但這是可能的?我需要做到這一點,並將這些文件上傳到blobstore,請我想要幫忙? – 2012-03-22 16:43:03

+0

@Eng_Engineer您是否閱讀過我鏈接的博客文章? – 2012-03-22 16:46:52

+0

:是的,我很抱歉,我不理解這篇文章! – 2012-03-22 16:50:32

相關問題