2017-04-12 66 views
0

我想上傳附件/ PNG圖像上使用python &瓶CouchDB的一個已經存在的文件,並使用來自(https://pythonhosted.org/CouchDB/getting-started.html附件上傳至CouchDB的蟒蛇

一個插件叫做CouchDB的我能得到附件上傳,但附件只顯示爲一個小的空白圖像。

@app.route('/process', methods=['POST']) 
def process(): 
if request.method == 'POST': 

    memeName = request.form['memeName'] 
    memeBaseName = request.form['memeBaseName'] 
    file = request.form['data'] 

    if file: 
     print("file: ", file) 
     memeName += ".png" 
     print("memeName: ", memeName) 
     print("memeBaseName: ", memeBaseName) 

    doc = db.get('andrew') 
    print("doc =", doc) 
db.put_attachment(doc, file, memeName, content_type="image/png") 

這裏是林得到的錯誤:我不知道有相當足夠的去這裏的 enter image description here

+0

當你說「附件只顯示爲一個小的空白圖像」 - 顯示在哪裏?當你在蒲團中瀏覽數據庫時,你看到了什麼?那裏的圖像? – Flimzy

+0

Hi @Flimzy,謝謝你的幫助。我在這裏有一個鏈接到2個截圖,其中一個顯示我的couchdb文檔json,另一個顯示當我點擊查看其中一個附件時看到的內容。我也使用qqq.png作爲這個問題的測試例子,它作爲附件上傳到沙發數據庫,​​但當我去查看它只是一個空白的小方形。 https://drive.google.com/drive/folders/0B29noplMMhOYNzE2X3E2NS1tcm8?usp =分享 –

+0

回溯中的錯誤與沙發無關。 Flask總是期望一個post請求返回一些東西,通常是一個字典傳遞給模板。 – sarwar

回答

0

,但我還是要敲擊。如果我的直覺不正確,我們會提前解決一些問題。

  • request.form ['data']中傳遞了什麼數據? (僅供參考,你應該避免在Python中使用'file'作爲變量名,因爲它是內置的,並且可能會導致一些不受歡迎的行爲)

  • 是否將附件添加到文檔中? (你可以在你的文檔中看到蒲團,看到它有一個附件,如果是這樣的話,大小是多少)

  • 如果附件正在保存,你怎麼試圖顯示它後,導致一個空白的方形?

我假設您發佈了圖片數據,但無法將其另存爲附件。從文檔的Python的CouchDB的模塊,

put_attachment(文件,內容,文件名,CONTENT_TYPE)

預計特定類型ofcontent:

內容 - 上傳的內容,無論是一個類似文件的對象或一個字符串

我假設窗體['data']不像對象那樣是一個文件,因爲它是在一個窗體中傳遞的。如果它是作爲文本傳遞的.png,則在將其放入沙發之前,應該將其編碼爲base64。假設帖子正常工作,並且您可以將圖片保存在沙發上,則應該在蒲團中看到適當尺寸的附件。然後,您可以簡單地從base64渲染圖像,如this question所示。如果附件不符合您的預期,請檢查並確保您實際上發佈了您的想法。

如果您計劃讓蒲團渲染圖像,您可能需要爲它提供更具體的內容類型,因爲您傳遞的內容不是普通的png,而是png的base64編碼。將內容類型更改爲

data:image/png;base64 

可能會解決該問題。

+0

嗨@sarwar,感謝您的幫助。我在這裏有一個鏈接到2個截圖,其中一個顯示我的couchdb文檔json,另一個顯示當我點擊查看其中一個附件時看到的內容。我也使用qqq.png作爲這個問題的測試例子,它作爲附件上傳到沙發數據庫,​​但當我去查看它只是一個空白的小方形。 https://drive.google.com/drive/folders/0B29noplMMhOYNzE2X3E2NS1tcm8?usp=sharing –

+0

回答你的問題。 1. base 64編碼圖像(長字符串隨機字符)通過。 2.是的,附件成功添加,但當我去查看它只是一個小的空白廣場(查看鏈接與上面的截圖)。 3.通過點擊查看附件來檢查被褥中的附件。我到達上面的第3部分^並卡住它們。 –

+0

這是一個很好的開始。嘗試在我更新的答案中使用content_type提交。 – sarwar