gpt4 book ai didi

PHP 强制下载带空格的文件名

转载 作者:行者123 更新时间:2023-12-05 08:57:17 26 4
gpt4 key购买 nike

好的,我似乎无法让我的脚本下载具有正确文件名的文件。

如果我去除看起来像这样的空格和破折号

if($type == 'mc'){
$file_name = $_POST['Ids'];
$file_name = str_replace('-', '', $file_name);
$file_name = str_replace(' ', '&', $file_name);
$url = base64_decode($stream);
$file_url = "scd.php?stream=".$url."&name=".$file_name."";
$url = array('url' => $file_url);
echo json_encode($url);
}

这是scd.php

<?php
$file = $_GET['stream'];
$name = $_GET['name'];
header("Content-type: application/x-file-to-save");
header("Content-Disposition: attachment; filename=".$name.".mp3");
readfile($file);
exit();
?>

它会强制下载,但只会保存发送的名称中的第一个单词。所以假设名称是 Your Song Here 它想将它保存为 Your.mp3 但是如果我从 $ 中删除 str_replace file_name 变量,然后它会尝试将文件保存为 Your,没有扩展名,但仍然只有第一个单词。

我需要它来传递整个 $file_name 变量 ex。 Your Song Here.mp3 并将其保存为 MP3 文件。

我不太确定我做错了什么

最佳答案

将文件名用引号括起来,类似

header("Content-Disposition: attachment; filename=\"${name}.mp3\"");

(不记得如何在 php 的字符串中转义“s”)。

我相信这实际上是 HTTP 规范所要求的。

关于PHP 强制下载带空格的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com