Unduh file dari database di php

Kesalahan yang ditampilkan memberi tahu kami dengan tepat mengapa kode gagal. No such file or directory_. Jalur file yang Anda berikan ke fungsi readfile() tidak valid, sehingga PHP tidak dapat mengirimkannya kepada Anda

Anda mengatakan ini adalah file "dari database". Apakah maksud Anda file tersebut disimpan dalam database, seperti yang saya lakukan di tutorial yang awalnya Anda posting, atau apakah file tersebut ada di sistem file dan lokasinya di database? . )

Jika file tersebut ada di dalam database, maka apa yang Anda lakukan di sana tidak masuk akal. Lihatlah fase #4 dalam tutorial untuk contoh tentang apa yang seharusnya Anda lakukan

Jika file ada di sistem file, maka ada langkah-langkah yang harus Anda ambil sebelum mencoba mengirimkannya. Pertama-tama, Anda perlu memverifikasi bahwa file tersebut benar-benar ada sebelum Anda mencoba membacanya. Untuk itu, fungsi file_exists dapat digunakan. Anda tidak boleh mencoba mengirim file tanpa menggunakan fungsi itu untuk memastikan keberadaannya

Juga, seperti semua input pengguna, Anda harus memverifikasi bahwa $_GET nilai ada sebelum Anda menggunakannya. Jika kode Anda bergantung pada $_GET["filename"] nilai yang ada, Anda perlu menggunakan isset() atau empty() untuk memastikan bahwa itu benar-benar ada, dan/atau bahwa itu benar-benar memiliki nilai. (Fungsi isset() hanya memverifikasi yang pertama, sementara empty() memverifikasi keduanya. )

  1. jika (. kosong($_GET["namafile"])) {
  2. // Lanjutkan dengan skrip
  3. }
  4. kalau tidak {
  5. echo "Anda harus memberikan nama file jika Anda ingin mengunduh file. ";
  6. }


2 15870

Unduh file dari database di php

Hai

Kesalahan yang ditampilkan memberi tahu kami dengan tepat mengapa kode gagal. No such file or directory_. Jalur file yang Anda berikan ke fungsi readfile() tidak valid, sehingga PHP tidak dapat mengirimkannya kepada Anda

Anda mengatakan ini adalah file "dari database". Apakah maksud Anda file tersebut disimpan dalam database, seperti yang saya lakukan di tutorial yang awalnya Anda posting, atau apakah file tersebut ada di sistem file dan lokasinya di database? . )

Jika file tersebut ada di dalam database, maka apa yang Anda lakukan di sana tidak masuk akal. Lihatlah fase #4 dalam tutorial untuk contoh tentang apa yang seharusnya Anda lakukan

Jika file ada di sistem file, maka ada langkah-langkah yang harus Anda ambil sebelum mencoba mengirimkannya. Pertama-tama, Anda perlu memverifikasi bahwa file tersebut benar-benar ada sebelum Anda mencoba membacanya. Untuk itu, fungsi file_exists dapat digunakan. Anda tidak boleh mencoba mengirim file tanpa menggunakan fungsi itu untuk memastikan keberadaannya

Juga, seperti semua input pengguna, Anda harus memverifikasi bahwa $_GET nilai ada sebelum Anda menggunakannya. Jika kode Anda bergantung pada $_GET["filename"] nilai yang ada, Anda perlu menggunakan isset() atau empty() untuk memastikan bahwa itu benar-benar ada, dan/atau bahwa itu benar-benar memiliki nilai. (Fungsi isset() hanya memverifikasi yang pertama, sementara empty() memverifikasi keduanya. )

  1. jika (. kosong($_GET["namafile"])) {
  2. // Lanjutkan dengan skrip
  3. }
  4. kalau tidak {
  5. echo "Anda harus memberikan nama file jika Anda ingin mengunduh file. ";
  6. }

Sep 3 '12 #

hai Atli, terima kasih atas balasannya tetapi saya sudah memilah dengan pengunduhan pengkodean

Dan ya itu cara yang salah untuk mengakses file di pengkodean sebelumnya, sekarang saya dapat dengan mudah mengunduhnya langsung dari database

Saya akan dibawa ke halaman kosong mana pun tetapi tidak ada file yang akan diunduh, dengan url. http. //localhost/dpo/unduh. php?id=1

Berikut adalah contoh tabel 'files' dari database 'datarepo' di mySQL

Jadi pertanyaan saya adalah, bagaimana cara mendapatkan file untuk diunduh?

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

Barand

Diposting 10 November 2018

Barand

  • Unduh file dari database di php
    Unduh file dari database di php

  • Moderator
  • Unduh file dari database di php
    • 23. 5k
    • 360
  • Lokasi. Cheshire, Inggris
  • Usia. 74
  • Donasi untuk saya

    • Membagikan

Diposting 10 November 2018

coba content-disposition. lampiran

header('Content-Disposition: attachment; filename="'.basename($file).'"');

 

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

wei123

Diposting 10 November 2018

wei123

  • Unduh file dari database di php
    Unduh file dari database di php

  • Anggota baru
    • 4

  • Pengarang

    • Membagikan

Diposting 10 November 2018 (diedit)

7 menit yang lalu, kata Barand

coba content-disposition. lampiran

header('Content-Disposition: attachment; filename="'.basename($file).'"');
_

 

tidak berhasil, unduh. php masih memberikan halaman putih tanpa mengunduh file

Sebagai referensi, inilah file unggahan saya (untuk saat ini abaikan sanitasi file)

<?php

include('config.php');

if(isset($_POST["submitfile"])) {
  
	$fileName = $_FILES['file']['name'];
	$fileSize = $_FILES['file']['size'];
	$fileError = $_FILES['file']['error'];
	$fileType = $_FILES['file']['type'];
	$data = file_get_contents($_FILES['file']['tmp_name']);

	$fileExt = explode('.', $fileName);
	$fileActualExt = strtolower(end($fileExt));
	
	$allowed = array('csv','doc','docx','jpg','pdf','png');
	
	
	if (in_array($fileActualExt, $allowed)){
		if ($fileError == 0){
			if ($fileSize < 5000000){
				$stmt = $db ->prepare("insert into files values('',?,?,?,?)");
				$stmt ->bindParam(1,$fileName);
				$stmt ->bindParam(2,$fileType);
				$stmt ->bindParam(3,$fileSize);
				$stmt ->bindParam(4,$data);
				$stmt ->execute();

				echo "File uploaded successfully.";
			}
			
			else {
				echo "File size is too big.";
			}
		} else {
			echo "There were was an error uploading the file.";
		}
		
	} else {
		echo "File format not supported.";
		
	}
	
}
?>

 

Diedit 10 November 2018 oleh wei123

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

macgyver

Diposting 10 November 2018

macgyver

  • Unduh file dari database di php
    Unduh file dari database di php

  • Staf Alumni
  • Unduh file dari database di php
    • 5. 1k
    • 107

    • Membagikan

Diposting 10 November 2018 (diedit)

a) umumnya bukan ide yang baik untuk menyimpan file dalam basis data (mendapatkan data besar masuk dan keluar dari basis data adalah masalah. dan dump sql berukuran dua kali lipat karena dilakukan dalam heksadesimal. ) database adalah untuk menyimpan data. sistem file adalah untuk menyimpan file

b) jika Anda menyimpan file dalam database, Anda harus menyimpan semua file. jenis gumpalan yang Anda gunakan hanya menampung 64K byte. ukuran file yang diizinkan oleh kode Anda adalah 5M byte (dan akan membutuhkan penanganan khusus untuk menyimpan karena ukuran paket data default adalah 1M byte. ) ukuran sebenarnya dari file pengujian Anda adalah 102k byte, yang kemudian dipotong menjadi 64K saat disimpan

c) kode php di download. php mencoba memeriksa keberadaan dan membaca file seolah-olah disimpan di sistem file, bukan di database

Diedit 10 November 2018 oleh mac_gyver

  • Unduh file dari database di php
    1

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

wei123

Diposting 10 November 2018

wei123

  • Unduh file dari database di php
    Unduh file dari database di php

  • Anggota baru
    • 4

  • Pengarang

    • Membagikan

Diposting 10 November 2018 (diedit)

32 menit yang lalu, kata mac_gyver

a) umumnya bukan ide yang baik untuk menyimpan file dalam basis data (mendapatkan data besar masuk dan keluar dari basis data adalah masalah. dan dump sql berukuran dua kali lipat karena dilakukan dalam heksadesimal. ) database adalah untuk menyimpan data. sistem file adalah untuk menyimpan file

b) jika Anda menyimpan file dalam database, Anda harus menyimpan semua file. jenis gumpalan yang Anda gunakan hanya menampung 64K byte. ukuran file yang diizinkan oleh kode Anda adalah 5M byte (dan akan membutuhkan penanganan khusus untuk menyimpan karena ukuran paket data default adalah 1M byte. ) ukuran sebenarnya dari file pengujian Anda adalah 102k byte, yang kemudian dipotong menjadi 64K saat disimpan

c) kode php di download. php mencoba memeriksa keberadaan dan membaca file seolah-olah disimpan di sistem file, bukan di database

a) Ya saya sangat menyadarinya tetapi proyek saya mengharuskan saya untuk menyimpan file ke dalam database jadi saya tidak punya pilihan di sini

b) Apakah ini baik-baik saja?

c) Saya telah menghapus blok if else jadi unduh. php sekarang terlihat seperti ini

<?php
include "config.php";
if(isset($_GET['id'])){
	
	$id = $_GET['id'];
	$stmt = $db -> prepare("select * from files where id=?");
	$stmt->bindParam(1,$id);
	$stmt->execute();
	$data = $stmt -> fetch();
	$file = $data['name'];

		header('Content-Disposition: attachment; filename="'.basename($file).'"');
		header('Content-Type:'.$data['mime']);
		header ('Content-Length:'.filesize($file));
		readfile($file);
		exit;
	
}


?>

Tetapi sekarang setiap kali saya mencoba mengunduh sesuatu, saya akan selalu mendapatkan file 322B

Diedit 10 November 2018 oleh wei123

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

ginerjm

Diposting 10 November 2018

ginerjm

  • Unduh file dari database di php
    Unduh file dari database di php

  • Anggota
    • 6. 4k
    • 62
  • Lokasi. Voorheesville NY

    • Membagikan

Diposting 10 November 2018

"proyek Anda membutuhkan" agar Anda menyimpan file dalam db?

  • Unduh file dari database di php
    1

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

Barand

Diposting 10 November 2018

Barand

  • Unduh file dari database di php
    Unduh file dari database di php

  • Moderator
  • Unduh file dari database di php
    • 23. 5k
    • 360
  • Lokasi. Cheshire, Inggris
  • Usia. 74
  • Donasi untuk saya

    • Membagikan

Diposting 10 November 2018

Fungsi filesize() dan readfile() keduanya memerlukan file untuk disimpan dalam sistem file

Jika Anda menyimpan file dalam database, dari situlah ukuran file dan data file Anda perlu diunduh. (Dan seperti yang ditunjukkan mac_gyver, kolom BLOB hanya menampung 64K. Ubah ke MEDIUMBLOB (16MB) )

Lebih baik lagi, simpan file yang diunggah di server dan simpan metadata hanya di database

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

Barand

Diposting 10 November 2018

Barand

  • Unduh file dari database di php
    Unduh file dari database di php

  • Moderator
  • Unduh file dari database di php
    • 23. 5k
    • 360
  • Lokasi. Cheshire, Inggris
  • Usia. 74
  • Donasi untuk saya

    • Membagikan

Diposting 10 November 2018

Beberapa petunjuk terkait potongan kode pertama di postingan asli Anda (untuk mencantumkan nama file)

Kueri Anda adalah

$stmt = $db -> prepare("SELECT * FROM files");
_
  1. Tidak ada gunanya menyiapkan kueri seperti itu karena tidak ada item data yang disediakan pengguna
  2. Jangan gunakan SELECT STAR. Terutama saat Anda menyimpan item gumpalan besar. Anda sekarang mengambil setiap kolom dari setiap baris (termasuk gumpalan yang tidak perlu). Ini hanya membuang-buang waktu dan sumber daya. Selalu tentukan kolom yang Anda butuhkan. Pada kasus ini
$stmt = $db->query("SELECT id, name FROM files");

 

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

wei123

Diposting 10 November 2018

wei123

  • Unduh file dari database di php
    Unduh file dari database di php

  • Anggota baru
    • 4

  • Pengarang

    • Membagikan

Diposting 10 November 2018 (diedit)

Unduhan yang diperbarui. php

<?php
include "config.php";
if(isset($_GET['id'])){
	
	$id = $_GET['id'];
	$stmt = $db->query("SELECT id, name,mime,filesize FROM files");
	$stmt->bindParam(1,$id);
	$stmt->execute();
	$data = $stmt -> fetch();
	$file = $data['name'];
	$type = $data['mime'];
	$size = $data['filesize'];
	
	// echo $data['name']."<br>";
	// echo $data['mime']."<br>";
	// echo $data['filesize']."<br>";
	
	
	header("Content-Disposition: attachment; filename=$file");
	header("Content-Type: $type");
	header("Content-Length:$size");
	
	exit;
	
	
}

?>
_

 

Saat ini, file yang saya unduh hanya berukuran 264 byte

 

Tabel yang diperbarui

 

Pesan gema memberi saya

<?php

<table class ="table">
<thead>

<tr>
<th>#</th>
<th>File</th>
<th>Action</th>
</tr>

</thead>

<tbody>
<?php
include('config.php');

$stmt = $db -> prepare("SELECT * FROM files");
$stmt->execute();


while($row = $stmt->fetch()){
?>

<tr>
 <td> <?php echo $row["id"]?></td>
 <td> <?php echo $row["name"]?></td>
 <td><a href="download.php?id=<?php echo $row["id"]?>" class="btn btn-primary">Download</a></td>
</tr>

<?php
}
?>

</tbody>

</table>

?>
0

 

Diedit 10 November 2018 oleh wei123
pengeditan kode

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

Barand

Diposting 10 November 2018

Barand

  • Unduh file dari database di php
    Unduh file dari database di php

  • Moderator
  • Unduh file dari database di php
    • 23. 5k
    • 360
  • Lokasi. Cheshire, Inggris
  • Usia. 74
  • Donasi untuk saya

    • Membagikan

Diposting 10 November 2018

Anda juga harus memikirkan untuk mengeluarkan konten file juga. Yang Anda lakukan hanyalah mengirim tajuk

Permintaan yang saya berikan kepada Anda adalah di mana Anda mencantumkan file untuk dipilih. Anda tidak dapat menggunakan kueri yang sama setiap kali Anda mengakses database. Kali ini Anda harus memilih catatan yang diperlukan (id = ?) dan mendapatkan semua bidang (termasuk kolom blob)

Saya sarankan Anda mengaktifkan pelaporan kesalahan php - Anda seharusnya mendapatkan kesalahan yang memberi tahu Anda bahwa indeks pantomim dan ukuran file tidak ada (karena Anda tidak memilih kolom tersebut)

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

benamen

Diposting 10 November 2018

benamen

  • Unduh file dari database di php
    Unduh file dari database di php

  • Anggota
    • 2. 1k
    • 46

    • Membagikan

Diposting 10 November 2018

1 jam yang lalu, kata wei123

proyek saya mengharuskan saya untuk menyimpan file ke dalam database jadi saya tidak punya pilihan di sini

Ada yang berbau tidak enak di sini

Tautkan ke komentar
Berbagi di situs lain

Lebih banyak opsi berbagi

Unduh file dari database di php
Unduh file dari database di php

Barand

Diposting 10 November 2018

Barand

  • Unduh file dari database di php
    Unduh file dari database di php

  • Moderator
  • Unduh file dari database di php
    • 23. 5k
    • 360
  • Lokasi. Cheshire, Inggris
  • Usia. 74
  • Donasi untuk saya

    • Membagikan

Diposting 10 November 2018

Karena Anda terlalu malas untuk menentukan nama kolom dalam pernyataan SELECT dan INSERT Anda, beberapa di antaranya adalah tebakan. Tapi seharusnya terlihat seperti ini

Bagaimana cara mengambil file dari database di PHP?

Ambil atau Ambil Data Dari Basis Data di PHP .
PILIH nama_kolom DARI nama_tabel
$query = mysql_query("pilih * dari namatabel", $koneksi);
$koneksi = mysql_connect("localhost", "root", "");
$db = mysql_select_db("perusahaan", $koneksi);
$query = mysql_query("pilih * dari karyawan", $koneksi);

Bagaimana cara mengunduh file PDF dari database di PHP?

Kami akan menggunakan fungsi FPDF libs untuk menghasilkan file pdf dengan header dan footer. .
Langkah 1. Kami akan membuat tabel karyawan ke dalam database MySQL
Langkah 2. Mari hubungkan database MySQL dengan PHP. Kami akan membuat koneksi. .
Langkah 3. Kami akan membuat generate_pdf. php dan tambahkan kode di bawah ini
Langkah 4. Kita akan membuat index

Bagaimana cara membuat file dapat diunduh dalam PHP?

PHP memungkinkan Anda mengunduh file dengan mudah menggunakan fungsi readfile() bawaan. Fungsi readfile() membaca file dan menulisnya ke buffer output. .
header('Tipe-Konten. aplikasi/aliran oktet');
header("Pengkodean-Transfer-Konten. utf-8");

Bagaimana cara mengunduh file dari jalur file di PHP?

Fungsi readfile() digunakan dalam skrip PHP untuk mengunduh paksa file apa pun dari lokasi saat ini, atau file dengan jalur file.