我是 python/Django 和 Dropbox-API 编程的新手。我搜索和搜索,但一直无法找到答案。
我正在使用 Python-Django 并授权我的 Dropbox 应用程序访问 Dropbox 用户的帐户。我有我需要访问的令牌,可以运行 python 脚本来下载目标文件,但它只会将它保存到我正在运行它的 Web 服务器。
我正在尝试获取它,以便文件将通过网络浏览器直接下载给用户,而不是使用我的网络服务器连接到 Dropbox 并获取文件。
有没有办法在不使用网络服务器带宽的情况下使用 Dropbox API 下载文件?我想我应该使用 Dropbox REST API,但我不知道如何正确创建 Web URL,以便它授权获取文件。我有我的应用程序的用户公钥/私钥,但不知道如何生成 URL 以使其使用它。
任何我可以从中学习到的信息的建议或链接将不胜感激。
import re
import base64
from datetime import datetime, timedelta
from dateutil import parser
from django.contrib import admin
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from dropbox import client, rest, session
dropboxPath = '/Photos/Kids.jpg'
localPath = '~/Downloads' # This path is generated through a jQuery Dialog and stored in session variable
def getAPI(userPublicKey, userPrivateKey):
connection = session.DropboxSession(AppPublicKey, AppPrivateKey, AccessType)
connection.set_token(userPublicKey, userPrivateKey)
dropbox = client.DropboxClient(connection)
api = dropbox
return api
def fileDownload(request, api, dropboxPath, localPath):
# Connect to dropbox with user keys
api = getAPI(userPublicKey, userPrivateKey)
# Download target file
path_source = dropboxPath
path_target = localPath
# ISSUE SECTION
# --------------------
# This section will download the file from the user's dropbox,
# but it downloads to my web server first (memory or file).
# I want this to go directly to the user via browser download vs. going through
# my server.
f, metadata = api.get_file_and_metadata(path_source)
out = open(path_target, 'w')
out.write(f.read())
out.close()
print metadata
return HttpResponseRedirect('/download/complete')