2011-11-30 29 views
5

Tôi cần biết những gì cần sử dụng cho một đường dẫn đích cho hàm move_uploaded_file của PHP. (xem http://php.net/manual/en/function.move-uploaded-file.php)đường dẫn đích cho move_uploaded_file trong php

Hiện tại, tôi có mã hoạt động tốt. thư mục gốc tên miền của tôi chứa các mục sau đây (trong số những người khác):
cập           < -đây là một thư mục
add-ảnh-submit.php       < -đây là một tập tin PHP có sử dụng move_uploaded_file

trong add-ảnh-submit.php, tôi có dòng mã sau đây:

$target_path = "uploads/" . basename($_FILES['uploadedFile']['name']); 

$ target_path i s được sử dụng làm tham số đích cho hàm. Tính năng này chỉ hoạt động tốt khi tôi truy cập tệp qua www.mydomain.com/add-photo-submit.php

Tuy nhiên, gần đây tôi đã thay đổi tệp .htaccess để xóa .php và thêm dấu gạch chéo. Bây giờ, tệp PHP được truy cập tại www.mydomain.com/add-photo-submit/ Tôi nghĩ rằng tệp PHP đang diễn giải đường dẫn đích là "www.mydomain.com/add-photo-submit/uploads/filename.jpg "

tôi đã cố gắng sử dụng một đường dẫn tuyệt đối, nhưng nó nói tôi không có quyền ...

Trong tương lai tôi muốn thư mục gốc của tôi để được thiết lập như thế này:
gốc
  - quản trị (thư mục)
        -add-photo-submit.php
  -uploads

Khung tham chiếu nào move_uploaded_file có?

Trả lời

23

Bạn nên sử dụng DOCUMENT_ROOT để có được đường dẫn tuyệt đối như thế này:

$target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . basename($_FILES['uploadedFile']['name']); 
+1

HOẶC bạn có thể sử dụng PHP liên tục, '__DIR__' như một thay thế cho' $ _SERVER [ 'DOCUMENT_ROOT'] '... – AnchovyLegend

+0

sau 5 năm, vẫn giúp. cảm ơn – raqulka

1

Hoạt động tên tệp cục bộ của PHP không biết mod_rewrite đã làm gì với các url của bạn và chỉ xử lý các đường dẫn hệ thống tệp thực tế. Bạn có thể có mod_rewrite biến đơn giản của bạn đơn giản example.com/index.php vào một hideous example.com/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/yz và PHP vẫn sẽ được chạy trong cùng một thư mục vật lý trên máy chủ.

Nếu tập lệnh PHP sống ở /home/sites/example.com/html/index.php và bạn sử dụng uploads/example.jpg làm đường dẫn di chuyển, khi đó PHP sẽ cố gắng đưa hình ảnh đó vào /home/sites/example.com/html/uploads/example.jpg, bất kể URL được yêu cầu là gì.

0

Hoặc sử dụng

$target_path = "../uploads/" . basename($fileUpload['name']); 
0

Chúng ta có thể sử dụng dirname(__FILE__) thay vì máy chủ gốc tuyên bố dưới đường trong bất kỳ gốc tập tin (index.php)

$_SESSION["uploads_base_url"]=dirname(__FILE__); 

và bây giờ bạn có thể sử dụng điều này trong bất kỳ tệp nào cần tải lên.

echo $uploads_base_url=$_SESSION["uploads_base_url"]; 
Các vấn đề liên quan