Загруженный файл будет храниться в базе данных и папке (имя папки: uploads). Теперь я хочу знать, как создать файл загрузки из базы данных / папки. У меня есть два файла butangDonload.php и download.php. Когда пользователь нажмет слово «загрузить», появится всплывающее окно и сохранит файл.
butangDonload.php
<?php $file = "Bang.png"; //Let say If I put the file name Bang.png echo "<a href='download.php?nama=".$file."'>donload</a> "; ?>
download.php
<?php $name= $_GET['nama']; download($name); function download($name){ $file = $nama_fail; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } } ?>
Я изменил ваш код с небольшой модификацией, будет хорошо работать. Вот код:
butangDonload.php
<?php $file = "logo_ldg.png"; //Let say If I put the file name Bang.png echo "<a href='download1.php?nama=".$file."'>download</a> "; ?>
download.php
<?php $name= $_GET['nama']; header('Content-Description: File Transfer'); header('Content-Type: application/force-download'); header("Content-Disposition: attachment; filename=\"" . basename($name) . "\";"); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($name)); ob_clean(); flush(); readfile("your_file_path/".$name); //showing the path to the server where the file is to be download exit; ?>
Здесь вам нужно указать путь, из которого должен быть загружен файл. т.е. просто укажет имя файла, но ему нужно указать путь к файлу для чтения этого файла. Таким образом, он должен быть заменен тем, что я протестировал с помощью вашего кода, и модификация также будет работать.
butangDonload.php $file = "Bang.png"; //Let say If I put the file name Bang.png $_SESSION['name']=$file;
Попробуй это,
<?php $name=$_SESSION['name']; download($name); function download($name){ $file = $nama_fail; ?>
You can also use the following code: <?php $filename = $_GET["nama"]; $contenttype = "application/force-download"; header("Content-Type: " . $contenttype); header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\";"); readfile("your file uploaded path".$filename); exit(); ?>
Вы можете использовать тег html5 для загрузки изображения напрямую
<?php $file = "Bang.png"; //Let say If I put the file name Bang.png echo "<a href='download.php?nama=".$file."' download>donload</a> "; ?>
Для получения дополнительной информации, проверьте эту ссылку http://www.w3schools.com/tags/att_a_download.asp
вот код для загрузки файла, сколько% загружено
<?php $ch = curl_init(); $downloadFile = fopen( 'file name here', 'w' ); curl_setopt($ch, CURLOPT_URL, "file link here"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_BUFFERSIZE, 65536); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'downloadProgress'); curl_setopt($ch, CURLOPT_NOPROGRESS, false); curl_setopt( $ch, CURLOPT_FILE, $downloadFile ); curl_exec($ch); curl_close($ch); function downloadProgress ($resource, $download_size, $downloaded_size, $upload_size, $uploaded_size) { if($download_size!=0){ $percen= (($downloaded_size/$download_size)*100); echo $percen."<br>"; } } ?>