Köprü işleri - bir Gönder düğmesi ile Html Form yaramadığını

2 Cevap php

Ben indirmek için bir dosya izin başlıklarını iter bir PHP komut dosyası var. Bir köprü üzerinden veya bağlantısını kullanarak tarayıcı üzerinden çağrıldığında bu script çalışıyor. Bu gibi görünüyor nasıl:

<a href="download.php?file=test.mp3&properFilename=Testing File">Download</a>

Ben bu yerine bir düğme (sbumit) olmak istiyorum, bu yüzden bu yaptım:

<form action="download.php?file=test.mp3&properFilename=Testing File" method="get">
<input type="submit" value="Download Audio" name="download"/>
</form>

Ancak, bu işe yaramazsa. Ben bunun üzerine tıkladığınızda. Bu indirme iletişim kutusunu başlatır ama dosya boş. Bu (tırnak işaretleri olmadan) ". Mp3" olarak dosya adını gösterir! Köprünün üzerinden aynı bağlantı tam dosya adı "Test Dosya" gösterir. Neden bu? Burada PHP ilgili pasaj olduğunu:

$filename = '../'.$_GET['file'];
$properFilename = $_GET['properFilename'].'.mp3';

header("Content-Disposition: attachment; filename=\"".basename($properFilename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();

Thank you for any help. Bu bana tüm gün ve gece deli sürüş olmuştur!

2 Cevap

Ben eylem url o urlencoded oldu düşünüyorum, ve kodlanmış GET parametreleri gönderilmez.

Sadece bu gibi "dosya" ve "properFilename" parametreleri içeren iki gizli alanları download.php ve sahip eylem url ayarlamak için deneyebilirsiniz:

<form action="download.php" method="GET">
  <input type="submit" value="Download Audio" name="download"/>
  <input type="hidden" name="file" value="test.mp3" />
  <input type="hidden" name="properFilename" value="Testing File" />
</form>

Yoksa bile formu olmadan, bir input type = "button" kullanabilirsiniz:

<input type="button" 
      onclick="location.href='download.php?file=test.mp3&properFilename=Testing File';" 
      value="Download"/>

Ya bir görüntü düğmesi:

<a href="download.php?file=test.mp3&properFilename=Testing File">
   <img src="IMAGE_BUTTON_HERE" />
</a>

Bunun yerine CMS anlaşılacağı gibi kullanarak, siz de (değil bir formda beri burada aslında semantik doğru biridir) düğmesi öğesini kullanabilirsiniz

<button onclick="document.location = 'bla.php?f=vars'">Download</button>

Daha iyi ders dışı ayrı bir javascript dosyası içine düğmesinin dışarı onclick olayı taşımak olacaktır olacaktır.