ไม่สามารถเปิดไฟล์ที่ดาวน์โหลดซึ่งมีสัญลักษณ์ '&' ในชื่อไฟล์ได้

ฉันต้องการดาวน์โหลดไฟล์ที่อัปโหลดไปยังเซิร์ฟเวอร์ ฉันมีชื่อไฟล์เป็นลิงก์ และฉันต้องดาวน์โหลดไฟล์โดยตรงเมื่อผู้ใช้คลิก ฉันดำเนินการได้สำเร็จ ปัญหาที่ฉันเผชิญอยู่ตอนนี้คือ ฉันไม่สามารถเปิดไฟล์ที่มีสัญลักษณ์ amp ได้ ในชื่อไฟล์แม้ว่าจะดาวน์โหลดแล้วก็ตาม เช่น &,test.doc(ชื่อไฟล์ที่มีสัญลักษณ์พิเศษอื่นๆ สามารถดาวน์โหลดและเปิดได้อย่างถูกต้อง)

สคริปต์ php ของฉันเป็นเช่นนี้:

<script>
function downloadme(file){          
    var link = "download.php?file=" + file; 
    location.replace(link);
} 
</script>

<a title="Click to download" href="/thjavascript:downloadme()">filename</a>

ดาวน์โหลด.php

<?php
$path = $_GET['file'];
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"" . basename($path . $uri[1]) . "\"" ); 
@readfile($path);  
 ?>  

person Techy    schedule 06.05.2014    source แหล่งที่มา


คำตอบ (1)


นี่คือสิ่งที่ฉันทำ

ดาวน์โหลด.php:

<?php
$path = $_GET['file'];
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"" . basename($path . $uri[1]) . "\"" ); 
@readfile($_GET['file']);
?>

ไฟล์ html:

<script>
function downloadme(file){          
    var link = "download.php?file=" + escape(file);
    location.replace(link);
} 
</script>

<a title="Click to download" href="/thjavascript:downloadme('test&12.doc')">filename</a>
person Jm Verastigue    schedule 06.05.2014
comment
เข้ารหัสไฟล์ใน javascript var link = "download.php?file=" + encodeURI(file); จากนั้นถอดรหัสใน PHP - person Jm Verastigue; 06.05.2014
comment
ไฟล์ถูกดาวน์โหลดด้วยชื่อไฟล์ (เช่น: ชื่อไฟล์มีชื่อไฟล์เป็น test&12.doc) เป็น 'test' เท่านั้น นั่นหมายถึงอักขระที่ตามหลัง & ไม่ได้รับ ดังนั้นชื่อไฟล์จึงไม่สามารถเปิดได้ - person Techy; 06.05.2014
comment
แก้ไขคำตอบของฉัน ตรวจสอบว่ามันเหมาะกับคุณหรือไม่ ไชโย! - person Jm Verastigue; 06.05.2014