如何允许用户使用 Flask 下载 MIDI 文件而不下载 0 字节?

How do I allow users to download a MIDI file with Flask without getting a 0 byte download?

我正在编写一个使用 MIDIUtil 库创建 MIDI 文件的应用程序。当用户提交 HTML 表单时,会使用 MIDIUtil 创建一个 MIDI 文件对象。我如何允许用户将其下载为 .mid 文件?我试过下面的代码,但我最终下载了一个 0 字节的文件。

return Response(myMIDIFile, mimetype='audio/midi')

可能只想尝试使用 send_file

from flask import send_file

return send_file("yourmidifile.mid", as_attachement=True, mimetype="audio\midi")

我使用以下代码的变体来允许我的用户下载他们生成的图像。下面的代码应该适合你。请注意,您很可能需要指定正在下载的文件的完整服务器路径。

from flask import send_file

download_filename = FULL_PATH_TO_YOUR_MIDI_FILE

return(send_file(filename_or_fp = download_filename,mimetype="audio/midi",as_attachment=True))

我最终使用了它,而且它起作用了。

new_file = open('test.mid', 'wb')
myMIDI.writeFile(new_file)
new_file.close()
new_file = open('test.mid', 'rb')
return send_file(new_file, mimetype='audio/midi')