def package_file_fetch(request, package_id):
pref = preferences.Setting
pkg = Version.objects.get(id=int(package_id))
if not pkg:
return HttpResponseNotFound()
file_path = os.path.join(settings.MEDIA_ROOT, pkg.storage.name)
if not os.path.exists(file_path):
return HttpResponseNotFound()
if pref.download_cydia_only:
if 'HTTP_X_UNIQUE_ID' not in request.META:
return HttpResponseBadRequest()
request_path = pkg.storage.name
request_url = pkg.get_external_storage_link()
pkg.download_times = pkg.download_times + 1
pkg.save()
if pref.redirect_resources == 1:
# Redirect URLs
return redirect(request_url)
elif pref.redirect_resources == 2:
# Redirect to WEB server
response = HttpResponse()
if pref.web_server == 0:
response['X-Accel-Redirect'] = request_url
elif pref.web_server == 1:
# You may set Send File Path to settings.MEDIA_ROOT
response['X-sendfile'] = request_path
elif pref.web_server == 2:
pass
else:
# Return FileResponse By Reading Static File
response = serve(
request,
path=request_path,
document_root=settings.MEDIA_ROOT,
)
response['Content-Type'] = 'application/octet-stream'
response['Content-Transfer-Encoding'] = "binary"
response['Cache-Control'] = "public, must-revalidate, max-age=0"
response['Content-Disposition'] = "attachment; filename=\"" + urllib.quote_plus(pkg.base_filename()) + "\""
return response
评论列表
文章目录