django:如何正确指定输出下载文件类型(在本例中为mp3)?

django:如何正确指定输出下载文件类型(在本例中为mp3)?,django,text-to-speech,Django,Text To Speech,我有一个简单的django平台,可以上传文本文件。最终,我想返回一个可下载的mp3音频文件,该文件由上传文件中的文本制作而成。我目前的问题是,我似乎无法正确指定网站输出供下载的文件类型 然后,我尝试将网站的可下载输出设置为mp3文件: views.py代码改编自 按下上载按钮后,文本到语音转换成功,但响应的内容类型不能定义为“mp3”。下载的结果文件是result.mp3.txt,其中包含“None”。您可以尝试使用下面的示例代码准备您的响应吗 我已经成功地以这种方式正确返回CSV文件,因此它也

我有一个简单的django平台,可以上传文本文件。最终,我想返回一个可下载的mp3音频文件,该文件由上传文件中的文本制作而成。我目前的问题是,我似乎无法正确指定网站输出供下载的文件类型

然后,我尝试将网站的可下载输出设置为mp3文件:

views.py代码改编自


按下上载按钮后,文本到语音转换成功,但响应的内容类型不能定义为“mp3”。下载的结果文件是result.mp3.txt,其中包含“None”。

您可以尝试使用下面的示例代码准备您的响应吗

我已经成功地以这种方式正确返回CSV文件,因此它也可能对您有所帮助

这是:

HttpResponse(content_type='text/plain')  # Plain text file type
response['Content-Disposition'] = 'attachment; filename="attachment.txt"'  # Plain text file extension
response.write("Hello, this is the file contents.")
return response

这里我可以看到两个问题。第一个是tts.save返回None,它直接传递给HttpResponse。其次,内容类型设置为mp3,并且应该设置为音频/mp3

调用tts.save后,打开mp3并将文件句柄传递给HttpResponse,然后正确设置内容类型-例如:

def simple_upload(request):
    if request.method == 'POST' and request.FILES['myfile']:
        ...
        tts.save("result.mp3")
        response=HttpResponse(open("result.mp3", "rb"), content_type='audio/mp3')

嗨,我用你的代码作为文本示例,它是有效的。但是,当我尝试将此应用于mp3案例时,生成的mp3文件是一个包含“None”的文本文件。。。x=strmyfile.read;tts=gTTStext=x,lang='en';response=httpresponsets.saveeg.mp3,content_type='mp3';响应['Content-Disposition']='附件;filename=result.mp3';返回上述代码中的响应,例如.mp3应该是result.mp3-这已在我的代码中更正
def simple_upload(request):
    if request.method == 'POST' and request.FILES['myfile']:
        ...
        tts.save("result.mp3")
        response=HttpResponse(open("result.mp3", "rb"), content_type='audio/mp3')