0

我正在设计一个网站。我有一个带有复选框的表格。我想根据用户选中的复选框,我向用户发送文件以下载它。首先我将文件保存在服务器上,但现在我意识到这不是一个好方法。因为可能有很多人同时请求文件,所以服务器上会存储很多文件。我需要一种将可下载文件发送到客户端而不存储在服务器上的方法。你能指导我怎么可能吗?(为了使其可下载,我将文件存储在媒体文件夹中,并将作为可下载文件的 url 的数据发送到模板中的 jquery 函数)这是我以前的代码:

def dlFunc(request):
    if request.is_ajax():
        authObject = socAuthenticationBackend()
        if request.method == 'POST':
            form = backupForm(request.POST)
            if form.is_valid(): 
                //do form processing               
                //receives file from server with web service 
                downloadFileDecoded = base64.b64decode(downloadFile)
                randomNum = random.random()
                strRandomNum = str(randomNum)
                randPart = strRandomNum.split('.')
                try:
                   f = open("media/downloadFiles/backup"+randPart[1]+".tar.gz","w")
                   try:
                       f.write(downloadFileDecoded)
                       data = "/media/downloadFiles/backup"+randPart[1]+".tar.gz"          
                   finally:
                       f.close()
                except IOError:
                     data = "error"
                return HttpResponse(data)
        else:
            form = backupForm()                     
        return render_to_response('backup.html', RequestContext(request, { 'form':form}))       
    else:
        return render_to_response("ajax.html", {}, context_instance=RequestContext(request))
4

2 回答 2

0

您可以使用 Amazon S3 并让您的用户直接将他们的文件上传到 S3。

https://stackoverflow.com/a/848251/44816

然后您提供 S3 url 以供下载。S3 允许您使用 cname,因此 S3 url 甚至可以在您的域下(例如 files.example.com)。

于 2012-11-26T20:58:36.840 回答
0

如果客户想下载,他只能下载服务器上的文件。否则你必须是服务器。

于 2012-11-26T06:41:50.053 回答