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

次に、ダウンロード用のS3URLを提供します。S3ではcnameを使用できるため、S3のURLをドメイン(files.example.comなど)の下に置くこともできます。

于 2012-11-26T20:58:36.840 に答える
0

クライアントがダウンロードしたい場合、サーバー上にあるファイルのみをダウンロードできます。それ以外の場合は、サーバーにする必要があります。

于 2012-11-26T06:41:50.053 に答える