我目前正在开发一个小型Web界面,允许不同的用户上传文件,转换他们上传的文件,并下载转换后的文件.转换的细节对我的问题并不重要.
我目前正在使用flask-uploads来管理上传的文件,我将它们存储在文件系统中.一旦用户上传并转换文件,就会有各种漂亮的按钮来删除文件,因此上传文件夹不会填满.
我不认为这是理想的.我真正想要的是在下载文件后立即删除它们.我会满足于会话结束时被删除的文件.
我花了一些时间试图弄清楚如何做到这一点,但我还没有成功.这似乎不是一个不寻常的问题,所以我认为必须有一些解决方案,我错过了.有没有人有办法解决吗?
我正在使用 Flasksend_file()来让人们从服务器下载文件。
我目前的代码如下:
@app.route('/', methods=["GET", "POST"])
def index():
if request.method == "POST":
link = request.form.get('Link')
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
info_dict = ydl.extract_info(link, download=False)
video_url = info_dict.get("url", None)
video_id = info_dict.get("id", None)
video_title = info_dict.get('title', None)
ydl.download([link])
print("sending file...")
send_file("dl/"+video_title+".f137.mp4", as_attachment=True)
print("file sent, deleting...")
os.remove("dl/"+video_title+".f137.mp4")
print("done.")
return render_template("index.html", message="Success!")
else:
return render_template("index.html", message=message)
Run Code Online (Sandbox Code Playgroud)
我.f137.mp4添加的唯一原因是因为我使用 AWS C9 作为我的在线 IDE,并且我无法安装 FFMPEG 来在 Amazon Linux 上组合音频和视频。然而,这不是问题。问题是它没有发送下载请求。
这是控制台输出:
127.0.0.1 - - [12/Dec/2018 16:17:41] "POST / HTTP/1.1" 200 -
[youtube] 2AYgi2wsdkE: Downloading …Run Code Online (Sandbox Code Playgroud)