1

この問題は、他の問題のより詳細な説明です。

コードはかなり公平なので、githubに配置しました。ご不便をおかけして申し訳ございません。 https://github.com/lonehangman/mccdropdav/blob/master/views.py

100行目以降が問題の始まりです。この1週間、Google App Engine(GAE)で設定されたwebdavを介して、ページ(iPad)からドロップボックスにファイルをアップロードしようとしましたが失敗しました。

ドロップボックスの内容を表示できますが、コンピューターまたはiPadからダウンロードまたはアップロードすると、常にエラーが発生します。ログを確認したところ、110行目にキーエラーがあることがわかったので、meta_entryを出力してこれを修正しようとしましたが、これは存在しないリソースであることがわかりました。
(したがって、# make a fake Resource to ease our exporting106行目)。この問題で何日も困惑しましたが、友人から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 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 の最初の引数はドロップボックスツリー内のファイルの完全なパス (ファイルの名前を含む) であり、2 番目の引数はファイルのようなオブジェクトです。

だからそのようなものが良いかもしれません

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

put_fileご覧のとおり、呼び出しで何が起こったかについての詳細情報を得るために、 の戻り値を見ることができますput_file。Dropbox からの応答に従って、応答コードを調整できます。

于 2012-04-19T13:29:36.270 に答える