Saya perlu melihat apakah ada gambar tertentu di cdn saya.
Saya sudah mencoba yang berikut ini dan tidak berhasil:
if (file_exists(http://www.example.com/images/$filename)) {
echo "The file exists";
} else {
echo "The file does not exist";
}
Meskipun gambar tersebut ada atau tidak ada, selalu tertulis "File tersebut ada". Saya tidak yakin mengapa ini tidak berfungsi ...
file_exists
ke lokasi terpencil akan sangat lambat.Jawaban:
Anda memerlukan nama file setidaknya dalam tanda kutip (sebagai string):
Juga, pastikan
$filename
divalidasi dengan benar. Dan kemudian, ini hanya akan berfungsi ketikaallow_url_fopen
diaktifkan di konfigurasi PHP Andasumber
Ini tidak berhasil untuk saya. Cara saya melakukannya menggunakan getimagesize.
Perhatikan bahwa '@' akan berarti bahwa jika gambar tidak ada (dalam hal ini fungsi biasanya akan menampilkan kesalahan :)
getimagesize(http://www.mydomain.com/images/filename.png) [function.getimagesize]: failed
itu akan mengembalikan false.sumber
@getimagesize('//path/to/image.jpg')
tidak akan berfungsi).Yah,
file_exists
tidak mengatakan jika sebuah file ada, ia mengatakan jika sebuah jalur ada . ⚡⚡⚡⚡⚡⚡⚡Jadi, untuk memeriksa apakah itu file maka Anda harus menggunakan
is_file
bersama denganfile_exists
untuk mengetahui apakah benar-benar ada file di belakang jalur, jika tidakfile_exists
akan kembalitrue
ke jalur yang ada.sumber
Coba seperti ini:
sumber
Berikut adalah cara termudah untuk memeriksa apakah suatu file ada:
sumber
Satu hal yang harus Anda pahami terlebih dahulu: Anda tidak memiliki file .
File adalah subjek dari sistem file , tetapi Anda membuat permintaan menggunakan protokol HTTP yang tidak mendukung file selain URL.
Jadi, Anda harus meminta file yang tidak ada menggunakan browser Anda dan melihat kode respons. jika bukan 404, Anda tidak dapat menggunakan pembungkus apa pun untuk melihat apakah ada file dan Anda harus meminta cdn Anda menggunakan beberapa protokol lain, misalnya FTP
sumber
sumber
Jika file ada di domain lokal Anda, Anda tidak perlu memasukkan URL lengkapnya. Hanya jalur ke file tersebut. Jika file berada di direktori yang berbeda, maka Anda perlu mengawali jalur dengan "."
Sering kali "." dibiarkan yang akan menyebabkan file ditampilkan sebagai tidak ada, padahal sebenarnya ada.
sumber
Ada perbedaan besar antara
is_file
danfile_exists
.is_file
mengembalikan nilai true untuk file (biasa):file_exists
mengembalikan nilai true untuk file dan direktori:Catatan: Periksa juga pertanyaan stackoverflow ini untuk informasi lebih lanjut tentang topik ini.
sumber
Anda harus menggunakan jalur absolut untuk melihat apakah file tersebut ada.
Jika Anda menulis untuk CMS atau kerangka PHP maka sejauh yang saya tahu semuanya telah mendefinisikan konstan untuk jalur root dokumen.
misalnya WordPress menggunakan ABSPATH yang dapat digunakan secara global untuk bekerja dengan file di server menggunakan kode Anda serta url situs.
Contoh Wordpress:
Saya akan bekerja ekstra di sini :). Karena kode ini tidak memerlukan banyak perawatan dan cukup solid, saya akan menuliskannya dengan pernyataan singkat if:
Pernyataan singkat IF menjelaskan:
sumber
Anda bisa menggunakan cURL. Anda bisa mendapatkan cURL untuk hanya memberi Anda header, dan bukan isi, yang mungkin membuatnya lebih cepat. Domain yang buruk selalu membutuhkan waktu beberapa saat karena Anda akan menunggu permintaan waktu habis; Anda mungkin dapat mengubah durasi waktu tunggu menggunakan cURL.
Berikut contohnya:
sumber
Anda dapat menggunakan
file_get_contents
fungsi ini untuk mengakses file jarak jauh. Lihat http://php.net/manual/en/function.file-get-contents.php untuk detailnya.sumber
Jika Anda menggunakan curl, Anda dapat mencoba skrip berikut:
}
URL Referensi: https://hungred.com/how-to/php-check-remote-email-url-image-link-exist/
coba ini :
sumber
Jika path ke gambar Anda relatif terhadap root aplikasi, lebih baik menggunakan sesuatu seperti ini:
Contoh penggunaan untuk fungsi ini:
Saya pikir itu ide yang baik untuk membuat sesuatu seperti perpustakaan untuk memeriksa keberadaan gambar yang berlaku untuk situasi yang berbeda. Di atas banyak jawaban bagus yang dapat Anda gunakan untuk menyelesaikan tugas ini.
sumber
Baca 5 byte pertama dari HTTP menggunakan
fopen()
danfread()
kemudian gunakan ini:untuk mendeteksi gambar.
sumber
file_exists
tidak hanya membaca file, tetapi juga jalur. jadi ketika$filename
kosong, perintah akan berjalan seperti jika ditulis seperti ini:jika direktori / gambar / ada, fungsi tersebut akan tetap kembali
true
.Saya biasanya menulisnya seperti ini:
sumber
file_exists($filepath)
akan mengembalikan hasil yang benar untuk direktori dan jalur file penuh, jadi tidak selalu merupakan solusi ketika nama file tidak dikirimkan.is_file($filepath)
hanya akan mengembalikan true untuk jalur file sepenuhnyasumber
Anda membutuhkan jalur server dengan file_exists
sebagai contoh
sumber
Bekerja untuk saya.
sumber