1

这个问题只是对另一个问题的更深入的解释。

我把代码放在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)
这样做消除了关键错误,但仍然不允许我上传到 Dropbox。iPad 告诉我它正在上传,但我检查了我的保管箱,但看不到新文件。我也不能下载文件。日志似乎没有捡起它。

谁能解释一下并尝试帮助(如果您不打算提供帮助,请不要费心写诸如“去其他地方”或“学习python noob”之类的东西。)

如果需要更多信息,请询问。在写这篇文章的时候我很累,所以看起来有点匆忙。

4

1 回答 1

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 教程示例put_file

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

put_file文档一样,put_file 的第一个参数是 Dropbox 树中文件的完整路径(包括文件名),第二个参数是一个类似文件的对象。

所以这样的事情可能会更好

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

如您所见,您可以查看 的返回值以获取有关调用put_file中发生的事情的更多信息。put_file您可以根据 Dropbox 的响应调整您的响应代码。

于 2012-04-19T13:29:36.270 回答