我是python / Django和Dropbox-API编程的新手。我搜索并搜索但未能找到答案。
我正在使用Python-Django并授权我的Dropbox应用程序访问Dropbox用户的帐户。我有需要访问的令牌可以运行python脚本来下载目标文件,但它只能将它保存到我正在运行它的Web服务器上。
我正试图通过网络浏览器将文件直接下载到用户,而不是使用我的网络服务器连接到Dropbox并获取文件。
有没有办法使用Dropbox API下载文件而不使用Web服务器带宽?我想我应该使用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')
答案 0 :(得分:2)
您可以通过/media
endpoint获取文件内容的直接网址,并将用户重定向到该网址。这样用户就可以直接从Dropbox的服务器下载文件。
在Python中,这看起来像这样:
return HttpResponseRedirect(api.media(path_source)['url'])
答案 1 :(得分:1)
也许你想要Dropbox选择器:https://www.dropbox.com/developers/dropins