Chúng tôi biết java Script đề cập đến ngôn ngữ kịch bản phía máy khách. Trong trường hợp chúng tôi cho rằng bạn đang cố lấy đường dẫn thư mục hệ thống của người dùng. Về cơ bản bạn không thể làm điều này. Hầu như không được phép tìm nạp cấu trúc thư mục hoặc đường dẫn
Ảnh của Rachel VineMỤC LỤCĐường dẫn tuyệt đối của tệp
Nếu bạn muốn lấy đường dẫn tuyệt đối của tệp, bạn có thể chọn phương thức jQuery attr[]. Ngoài ra, trong trang web, một tệp như hình ảnh, pdf, tài liệu được hiển thị bằng cách đưa đường dẫn đến thuộc tính src của một phần tử. Bây giờ, bạn cần kiểm soát id hoặc lớp của phần tử đó. Sau khi sử dụng đó. phương thức attr[] để bắt giá trị src
Mã số
var absolutePath=$["elementId"].attr["src"];
Trong trường hợp bạn có thể bắt đường dẫn tuyệt đối như
/dir1/pdf/grapes.pdf
Sau này, bạn cần thêm URL tên miền trước nó vì '/' giải thích thư mục gốc cho tên miền
JavaScript để lấy đường dẫn đầy đủ của tệp
Bước tiếp theo đặt hàm JavaScript này trong các thẻ đầu. Các biểu mẫu trên giá trị gửi cũng đặt tên hàm
Ghi chú. Bạn sẽ cần tạo một thư mục mới có tên "tải lên" trong thư mục chứa "tải lên. php" cư trú. Các tệp đã tải lên sẽ được lưu ở đó
Kiểm tra xem tệp đã tồn tại chưa
Bây giờ chúng ta có thể thêm một số hạn chế
Đầu tiên, chúng tôi sẽ kiểm tra xem tệp đã tồn tại trong thư mục "tải lên" chưa. Nếu có, thông báo lỗi sẽ hiển thị và $uploadOk được đặt thành 0
// Kiểm tra xem file đã tồn tại chưa
if [file_exists[$target_file]] {
echo "Xin lỗi, tập tin đã tồn tại. “;
$uploadOk = 0;
}
Kích thước tệp giới hạn
Trường nhập tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "fileToUpload"
Bây giờ, chúng tôi muốn kiểm tra kích thước của tệp. Nếu tệp lớn hơn 500KB, thông báo lỗi sẽ hiển thị và $uploadOk được đặt thành 0
// Kiểm tra dung lượng file
if [$_FILES["fileToUpload"]["size"] > 500000] {
echo "Xin lỗi, tệp của bạn quá lớn. “;
$uploadOk = 0;
}
Loại tệp giới hạn
Đoạn mã dưới đây chỉ cho phép người dùng tải lên các tệp JPG, JPEG, PNG và GIF. Tất cả các loại tệp khác đưa ra thông báo lỗi trước khi đặt $uploadOk thành 0
realpath[] is just a system/library call to actual realpath[] function supported by OS. It does not work on a path as a string, but also resolves symlinks. The resulting path might significantly differs from the input even when absolute path is given. No function in this notes resolves that.
The suggestion on the realpath man page is to look for an existing parent directory. Here is an example:
function resolvePath[$path] {
if[DIRECTORY_SEPARATOR !== '/'] {
$path = str_replace[DIRECTORY_SEPARATOR, '/', $path];
}
$search = explode['/', $path];
$search = array_filter[$search, function[$part] {
return $part !== '.';
}];
$append = array[];
$match = false;
while[count[$search] > 0] {
$match = realpath[implode['/', $search]];
if[$match !== false] {
break;
}
array_unshift[$append, array_pop[$search]];
};
if[$match === false] {
$match = getcwd[];
}
if[count[$append] > 0] {
$match .= DIRECTORY_SEPARATOR . implode[DIRECTORY_SEPARATOR, $append];
}
return $match;
}
?>
The result will retrieve absolute path for non-existing relative path. Even if a path does not exists, there should be existing directory somewhere, for which the realpath could be obtained. If this is not within the relative path [i.e. even current working directory does not exists], getcwd[] will retrieve absolute path, so some absolute path is returned [although in that case the PHP process could have huge problems].
pathinfo[] which can be used with UTF filenames.
function pathinfo_utf[$path]
{
if [strpos[$path, '/'] !== false] $basename = end[explode['/', $path]];
elseif [strpos[$path, '\\'] !== false] $basename = end[explode['\\', $path]];
else return false;
if [empty[$basename]] return false;
________số 8_______
if [strpos[$basename, '.'] !== false]
{
$extension = end[explode['.', $path]];
$filename = substr[$basename, 0, strlen[$basename] - strlen[$extension] - 1];
}
else
{
$extension = '';
$filename = $basename;
}
return array
[
'dirname' => $dirname,
'basename' => $basename,
'extension' => $extension,
'filename' => $filename
];
}
?>