Django 文件也在Pythonywhere服务器和用户笔记本电脑/pc上下载。如何限制在pythonywhere服务器上写入

Django 文件也在Pythonywhere服务器和用户笔记本电脑/pc上下载。如何限制在pythonywhere服务器上写入,django,video,download,pythonanywhere,Django,Video,Download,Pythonanywhere,问题是我用django在Pythonywhere上托管了视频。视频也在Pythonywhere服务器和用户/客户端系统上下载。这就是我使用操作系统的原因。删除(路径)。下载后,它将从服务器中删除 是否有任何方式文件不写在Pythonywhere服务器上。这样我就不用os.remove(路径)。 如何限制在pythonywhere服务器上写入。仅在用户系统下载 def fb_下载(请求): 如果我理解正确,您正在尝试从包含URL的浏览器获取请求。然后访问该URL处的页面,并从中提取另一个URL,然

问题是我用django在Pythonywhere上托管了视频。视频也在Pythonywhere服务器和用户/客户端系统上下载。这就是我使用操作系统的原因。删除(路径)。下载后,它将从服务器中删除

是否有任何方式文件不写在Pythonywhere服务器上。这样我就不用os.remove(路径)。 如何限制在pythonywhere服务器上写入。仅在用户系统下载

def fb_下载(请求):


如果我理解正确,您正在尝试从包含URL的浏览器获取请求。然后访问该URL处的页面,并从中提取另一个URL,然后希望将第二个URL(视频)的内容呈现给浏览器

这样做的方式是将文件下载到服务器,然后将其作为文件附件提供给浏览器

如果这样做,则无法避免在服务器上写入文件;实际上,您现在的操作方式可能会有问题,因为您在将响应返回到浏览器之前删除了文件,因此可能(取决于文件删除的处理方式以及
FileResponse
是否缓存了文件的内容)会出现没有文件发送回浏览器的情况

但另一种可行的方法是向URL发送重定向响应——变量
URL
中的URL——如下所示,而不下载:

def fb_download(request):

    link = request.GET.get('url')
    html= requests.get(link)
    try:       
        url= re.search('hd_src:"(.+?)"',html.text)[1]
    except:
        url= re.search('sd_src:"(.+?)"',html.text)[1]
    
    return redirect(url)

通过这样做,下载将在浏览器上进行,而不是在服务器上进行。

如果我理解正确,您正在尝试从包含URL的浏览器获取请求。然后访问该URL处的页面,并从中提取另一个URL,然后希望将第二个URL(视频)的内容呈现给浏览器

这样做的方式是将文件下载到服务器,然后将其作为文件附件提供给浏览器

如果这样做,则无法避免在服务器上写入文件;实际上,您现在的操作方式可能会有问题,因为您在将响应返回到浏览器之前删除了文件,因此可能(取决于文件删除的处理方式以及
FileResponse
是否缓存了文件的内容)会出现没有文件发送回浏览器的情况

但另一种可行的方法是向URL发送重定向响应——变量
URL
中的URL——如下所示,而不下载:

def fb_download(request):

    link = request.GET.get('url')
    html= requests.get(link)
    try:       
        url= re.search('hd_src:"(.+?)"',html.text)[1]
    except:
        url= re.search('sd_src:"(.+?)"',html.text)[1]
    
    return redirect(url)

通过这样做,下载是在浏览器上进行的,而不是在服务器上进行的。

谢谢Giles的回复。在没有FileResponse的情况下,这不会自动下载。我想问一个技巧,它是应该自动下载还是浏览器应该问下载位置。同样的问题在这里。请建议这是我最大的麻烦。path=YouTube(url).streams.filter(res=res).first().download(download_DIR)response=FileResponse(open(path,'rb'),as_attachment=True)os.remove(path)return response rry,我不明白你所说的“在没有FileResponse的情况下自动下载”是什么意思感谢Giles的回复。在没有FileResponse的情况下,这不会自动下载。我在问一个技巧,它是应该自动下载,还是浏览器应该询问下载位置。这里有相同的问题。请建议这是我最大的麻烦。path=YouTube(url).streams.filter(res=res).first().download(download_DIR)response=FileResponse(open(path,'rb'),as_attachment=True)os.remove(path)return response rry,我不明白你所说的“在没有FileResponse的情况下自动下载”是什么意思