2

わかりました、スクリプトで適切なファイル名のファイルをダウンロードする際に問題が発生しているようです。

このようにスペースとダッシュを取り除くと

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_nameYour

$file_name変数ex全体を渡すために必要です。Your Song Here.mp3それでもMP3ファイルとして保存します。

何が間違っているのかよくわかりません

4

2 に答える 2

1

You're trying to use an HTML entity (&amp;) in your file name. Don't do that. Also, don't use spaces in file names. You're better off replacing ' ' with _:

$file_name = str_replace(' ', '_', $file_name);

Then your file name will be safe to pass to via url without any special encoding or escaping needed.

于 2015-11-29T19:56:31.133 に答える