下载不使用本地路径重命名 我有以下元素:

问题描述 投票:0回答:1
对元素上的点击事件进行调查导致下载发生,但文件未重命名为

MyFiles.xlsx

文件的尺寸范围从5KB到150MB,无论大小如何,结果都相同。
在铬,边缘和Firefox上的结果相同。
在AJAX调用的成功回调中,在Django Python环境中生成并在编程中单击该元素。 生成并单击该元素的JavaScript代码是:

var link = document.createElement('a');
link.href = response.url;
link.download = dl_name;
document.body.appendChild(link);
link.click();
console.log(link);
document.body.removeChild(link);

提出的帖子表明,这种行为可能会使用交叉原始,但我的URL是相同的Origin。 ajax调用的原始响应标头:


HTTP/1.1 200 OK 日期:2025年1月8日,星期三14:48:37格林尼治标准时间 服务器:WSGISERVER/0.2 CPYTHON/3.11.5 内容类型:应用程序/JSON X框架选项:否认 内容长度:57 X-content-type-options:nosniff 推荐人 - 政策:相同的原始物质 交叉启动 - opener-policy:相同的矿体 我希望下载文件的名称设置为锚标签的下载属性中的值。 在过去的一周中,我尝试了无数的事情。到目前为止,太多列出,老实说它们只是我的脑袋。它们的范围从改变

href

中的路径,甚至将我的方法更改为使用blob作为文件链接,但这只是导致损坏的XLSX文件,我也无法求解。

作为一个最小的可重现示例,我将锚标签元素放置在上面的锚定标签元素中,是HTML文件中唯一的行。我运行了HTML文件,然后手动单击链接。 我收到相同的行为 - 未重命名下载的文件。
	

尽管我仍然不知道为什么锚标签上的下载属性无法正常工作,但我确实找到了一种使下载使用专有名称的方法。 也许有人为此而苦苦挣扎会很有帮助。

I使用此JavaScript代码创建带有HREF的锚定标签,并模仿A单击以调用Django视图:

function download_export(url, filename, dl_name) { var link = document.createElement('a'); link.href = url + "?data_file=" + filename + "&dl_file=" + dl_name document.body.appendChild(link); link.click(); document.body.removeChild(link); }


在视图中,我让代码获得了服务器文件路径(data_file)和所需的文件名(dl_file),我自己应用了适当的标头并返回了django文件响应。
javascript html browser download rename
1个回答
0
投票

if request.method == 'GET': temp_directory = str(settings.TEMP_ROOT) filename = request.GET.get('data_file') file_path = temp_directory + '\\' + filename dl_file = request.GET.get('dl_file') response = FileResponse(open(file_path, 'rb')) response['Content-Disposition'] = f'attachment; filename="{dl_file}"' return response

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.