2012-04-19 68 views
1

這個問題只是一個更深入的解釋其他問題。文件沒有通過python腳本上傳到保管箱

我把代碼放在github上,因爲它相當公平。對於造成的不便,我感到抱歉 https://github.com/lonehangman/mccdropdav/blob/master/views.py

100行以後是問題出現的地方。在過去的一週中,我嘗試過並無法通過在Google App Engine(GAE)上設置的webdav將文件從iPad上的文件上傳到Dropbox。

我可以查看我的保存箱的內容,但是當我從我的電腦或iPad上下載或上傳時,它總會給出錯誤。我檢查了日誌,發現110行有一個關鍵錯誤,所以我試圖通過打印meta_entry來解決這個問題,然後我意識到這是一個不存在的資源。
(因此# make a fake Resource to ease our exporting。在線106)。 這個問題讓我迷茫了幾天,但後來我的朋友告訴我刪除行152 root.append(self.export_meta_entry(metadata,href=self.request.path)) # first response's href contains exactly what you asked for (relative path)
這樣做擺脫了關鍵錯誤,但仍然不會讓我上傳到保管箱。 iPad告訴我它正在上傳,但我檢查了我的保管箱,但沒有看到新文件。我也不能下載文件。 日誌似乎沒有拿起它。

任何人都可以請解釋,並嘗試幫助(如果你沒有什麼幫助也懶得寫東西,如「去別的地方」或「學習Python小白」。)

如果有任何詳細信息只需要問。 寫這篇文章的時候我很累,所以看起來好像有點匆忙。

+0

在某些情況下,構建一個展示問題的最小示例可幫助您自己解決問題。 – FabienAndre 2012-04-19 13:08:40

回答

0

不看你的整個應用程序,但只有你put方法(叫Dropbox的put_file

例如
def put(self): 
     path = '/' + self.request_path 
     self.client.put_file(ROOT, os.path.dirname(path), self.request.body_file, file_name=os.path.basename(path)) 
     self.response.set_status(201,'Created') 

Dropbox API tutorialput_file

f = open('working-draft.txt') 
response = client.put_file('/magnum-opus.txt', f) 
print "uploaded:", response 

以及put_file documentation說put_file的第一個參數是Dropbox樹中文件的完整路徑(包括文件的名稱),第二個參數是文件類對象。

所以這樣的事情可能會更好

self.client.put_file(path, self.request.body_file) 

正如你所看到的,你可以看看put_file返回值來獲得您的通話put_file發生了什麼進一步的信息。您可以根據Dropbox的響應調整您的響應代碼。

+0

它給我一個錯誤'put_file()至少需要4個參數(給出3個)'。 我該怎麼辦? – bidluo 2012-04-20 08:21:53

+0

對不起,我想象你在調用Dropbox'put_file'方法的地方。這裏是wepapp'put_file',你似乎永遠不會問dropbox這樣的事情。我建議你從你的程序中獲得一個漸進的方法,從一個小型的本地應用程序開始,並且一次解決你的挑戰(webapp,auth ...)。你可以在這裏http://meta.stackexchange.com/a/128554/閱讀一些指針,並在下次問更精確的問題。 – FabienAndre 2012-04-20 08:36:27