私はウェブサイトをデザインしています。チェックボックスのあるフォームがあります。ユーザーがどのチェックボックスをオンにしているかに応じて、ファイルをユーザーに送信してダウンロードします。最初はファイルをサーバーに保存しましたが、今ではそれが良い方法ではないことに気付きました。多くの人が同時にファイルを要求する可能性があるため、サーバーには多くのファイルが保存されます。サーバーに保存せずに、ダウンロード可能なファイルをクライアントに送信する方法が必要です。それが可能な方法を教えてください。(ダウンロード可能にするために、メディアフォルダーにファイルを保存し、ダウンロード可能なファイルの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))