จะตรวจสอบไฟล์ (ไม่มีการจัดการ) ได้อย่างไร?


18

ฉันไม่พบฟังก์ชัน Drupal API ใน D7 ที่บอกฉันว่ามีไฟล์ (ไม่มีการจัดการ) อยู่หรือไม่ D6 มีfile_check_locationแต่ไม่ใช่สำหรับ 7

จะตรวจสอบไฟล์ (ไม่มีการจัดการ) ได้อย่างไร?

คำตอบ:


35

คุณสามารถใช้ฟังก์ชั่น PHP มาตรฐานเก่าบึงfile_exists()ถ้าฉันเข้าใจคุณถูกต้อง:

$uri = 'public://images/an-image.jpg';
if (file_exists($uri)) {
  // Do something
}

นอกจากนี้ยังใช้งานได้กับเส้นทางปกติ (สัมบูรณ์) เช่นกัน:

$path = '/var/www/drupal/sites/default/files/images/an-image.jpg';
if (file_exists($path)) {
  // Do something
}

ขอให้ช่วยชีวิตอีกครั้งขอบคุณ! ฉันจ้างคุณได้ไหม ;-)
Uwe

6
@MotoTribe ขึ้นอยู่กับจำนวนเงินที่คุณเสนอ;)
Clive

ทำไมจึงใช้งานได้ ฉันเพิ่งทดสอบกับ PHP ธรรมดาและกระแสจัดการโยนลงไปfile_exists()และมันไม่ทำงาน คำอธิบายใด ๆ
ไกเซอร์

เนื่องจากมีการลงทะเบียนสตรีมอย่างเหมาะสมโดย Drupal @kaiser ดูphp.net/manual/en/wrappers.php
Clive

@ ไคลฟ์ฉันหวังว่าคุณจะสามารถชี้ให้ฉันเห็นแหล่งที่มาใน Drupal ส่วนที่เหลือฉันรู้และไม่สามารถทำงานในการทดสอบ PHP ธรรมดาดังนั้นฉันถาม แก้ไข: nvm, พบพวกเขา
kaiser

3

ฉันไม่ทราบว่ากรณีการใช้งานเฉพาะของคุณคืออะไร แต่คุณไม่จำเป็นต้องตรวจสอบเพื่อดูว่ามีไฟล์อยู่หรือไม่

ฟังก์ชั่น file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive และ file_unmanaged_save_data ตรวจสอบเพื่อดูว่าไฟล์นั้นมีอยู่และส่งกลับเท็จถ้ามันไม่

คุณสามารถค้นหาซอร์สโค้ดใน drupal / include / file.inc และดู


3

คุณควรใช้ฟังก์ชั่น drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

และตรวจสอบ

if (!file_destination($uri, FILE_EXISTS_ERROR)) {
  // The file exist
  // Do something
} 

1
มันจะใช้งานได้เหมือนฟังก์ชั่นการfile_destination()ใช้file_exists()งาน
milkovsky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.