วิธีรับไดเรกทอรีอัพโหลดไฟล์เริ่มต้น drupal 7


21

ฉันมีปัญหาในการรับ directroy อัพโหลดจาก drupal มีฟังก์ชั่นที่คืนค่าพา ธ สัมพัทธ์หรือพา ธ สัมบูรณ์หรือไม่?


1
ลองใช้โปรแกรมเสริม ( public://,, private://ฯลฯ เพื่อหลีกเลี่ยงความขัดแย้งของโฟลเดอร์ใช้ประโยชน์จาก Drupal 7 :))
AyeshK

ฉันรู้ว่าสิ่งนี้ใช้ได้กับ image_style_url (uri) แต่ฉันต้องการส่งต่อไปยัง javascript เป็นตัวแปรสำหรับการประมวลผลที่ดีกว่านี้ ... ขอบคุณแม้ว่า
Jurudocs

คำตอบ:


24

ข้อมูลนี้ถูกบันทึกไว้ในตารางตัวแปรของ Drupal ใช้variable_getฟังก์ชั่นเพื่อรับข้อมูลนี้ส่งผ่านชื่อของตัวแปรที่ถูกต้อง:

  • สาธารณะ Filesystem สถานที่ตั้ง :variable_get('file_public_path', conf_path() . '/files');
  • ที่ตั้งระบบไฟล์ส่วนตัว :variable_get('file_private_path');

หากคุณต้องการใช้ไดเรกทอรีอัปโหลดชั่วคราวvariable_get('file_temporary_path');หากคุณต้องการกำหนดไดเรกทอรีอัปโหลดเฉพาะระบบโดยไม่คำนึงถึงการกำหนดค่าไซต์จริงให้ใช้file_directory_tempฟังก์ชัน

variable_get('file_public_path', conf_path() . '/files'); จะดึงเส้นทางเริ่มต้นสำหรับคุณในกรณีที่ไม่ได้รับการแก้ไขหรือกำหนดอย่างชัดเจนโดยผู้ดูแลเว็บไซต์


hmm ในกรณีของฉัน variable_get ('file_public_path') ว่างเปล่า ... ฉันต้องโทรหามันภายในตะขอหรือเปล่า?
Jurudocs

1
@Jurudocs ใช้สิ่งนี้แทน: variable_get('file_public_path', conf_path() . '/files');โดยทั่วไปแล้วจะดึงเส้นทางเริ่มต้นสำหรับคุณในกรณีที่ยังไม่ได้แก้ไขหรือตั้งค่าอย่างชัดเจนโดยผู้ดูแลไซต์
9ee1

@zhilevan ตรวจสอบการอนุญาตไฟล์ของคุณในไดเรกทอรีนั้น
Atomox

สิ่งนี้ให้เส้นทางสัมพัทธ์ซึ่งดูเหมือนว่ามีประโยชน์น้อยกว่าเส้นทางสัมบูรณ์ ฉันชอบdrupal_realpathวิธีแก้ปัญหาด้านล่าง ดูเหมือนว่าถูกกฎหมายมากขึ้น
Alex Finnarn

11

ในการรับพา ธ ของระบบไฟล์สัมบูรณ์ให้ใช้drupal_realpath (Drupal API)แทนfile_create_url:

drupal_realpath('public://'); 
// returns e.g. /var/www/drupal/sites/default/files

drupal_realpath('private://');
// returns e.g. /var/www/drupal/sites/default/files_private

3

คุณยังสามารถใช้ฟังก์ชันเหล่านี้เพื่อรับ URL ที่ถูกต้องจาก uri ที่สัมพันธ์กัน:

file_create_url('public://');
file_create_url('private://');

พวกเขากลับเส้นทางไปยังโฟลเดอร์สาธารณะหรือส่วนตัว

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