Hướng dẫn how to get the last uploaded file in php? - làm thế nào để lấy tệp tải lên cuối cùng trong php?

Vì vậy, tôi có ứng dụng này xử lý các tệp CSV. Tôi có một dòng mã để tải tệp.

$myFile = "data/FrontlineSMS_Message_Export_20120721.csv";  //The name of the CSV file
$fh = fopen($myFile, 'r');                             //Open the file

Tôi muốn tìm một cách mà tôi có thể nhìn vào thư mục data và nhận tệp mới nhất (tất cả chúng đều có thẻ ngày để chúng theo thứ tự bên trong data) và đặt tên bằng $myFile.

Tôi thực sự không thể tìm thấy và hiểu tài liệu của các thư mục PHP nên bất kỳ tài nguyên hữu ích nào cũng sẽ được đánh giá cao. Cảm ơn bạn.

hỏi ngày 22 tháng 7 năm 2012 lúc 2:39Jul 22, 2012 at 2:39

Hướng dẫn how to get the last uploaded file in php? - làm thế nào để lấy tệp tải lên cuối cùng trong php?

1

Dưới đây là một nỗ lực sử dụng scandir, giả sử các tệp duy nhất trong thư mục có tên tệp thời gian:assuming the only files in the directory have timestamped filenames:

$files = scandir('data', SCANDIR_SORT_DESCENDING);
$newest_file = $files[0];

Trước tiên, chúng tôi liệt kê tất cả các tệp trong thư mục theo thứ tự giảm dần, sau đó, bất kỳ tên nào là đầu tiên trong danh sách đó có tên tệp "lớn nhất" - và do đó là giá trị dấu thời gian lớn nhất - và do đó là mới nhất.

Lưu ý rằng scandir đã được thêm vào Php 5, nhưng trang tài liệu của nó cho thấy cách thực hiện hành vi đó trong Php 4.

Paulh

2.8422 Huy hiệu vàng15 Huy hiệu bạc31 Huy hiệu đồng2 gold badges15 silver badges31 bronze badges

Đã trả lời ngày 22 tháng 7 năm 2012 lúc 2:56Jul 22, 2012 at 2:56

MatchumatchuMatchu

Huy hiệu vàng 82K1717 gold badges151 silver badges160 bronze badges

10

Để tìm kiếm với ký tự đại diện, bạn có thể sử dụng:

 $latest_ctime)
        {
                $latest_ctime = filectime($file);
                $latest_filename = $file;
        }
}
return $latest_filename;
?>

Đã trả lời ngày 20 tháng 1 năm 2021 lúc 15:07Jan 20, 2021 at 15:07

Hướng dẫn how to get the last uploaded file in php? - làm thế nào để lấy tệp tải lên cuối cùng trong php?

1

Giải pháp của tôi, Giải pháp cải tiến từ Max Hofmann:

$ret = [];
$dir = Yii::getAlias("@app") . "/web/uploads/problem-letters/{$this->id}"; // set directory in question

if(is_dir($dir)) {
   $ret = array_diff(scandir($dir), array(".", "..")); // get all files in dir as array and remove . and .. from it
}

usort($ret, function ($a, $b) use ($dir) {
    if(filectime($dir . "/" . $a) < filectime($dir . "/" . $b)) {
         return -1;
    } else if(filectime($dir . "/" . $a) == filectime($dir . "/" . $b)) {
         return 0;
    } else {
         return 1;
    }
}); // sort array by file creation time, older first

echo $ret[count($ret)-1]; // filename of last created file

Đã trả lời ngày 22 tháng 6 năm 2021 lúc 18:09Jun 22, 2021 at 18:09

Đây là một ví dụ mà tôi cảm thấy tự tin hơn khi sử dụng trình xác thực của riêng mình thay vì chỉ dựa vào dấu thời gian với scandir ().

Trong bối cảnh này, tôi muốn kiểm tra xem máy chủ của tôi có phiên bản tệp gần đây hơn phiên bản của máy khách không. Vì vậy, tôi so sánh các số phiên bản từ tên tệp.

$clientAppVersion = "1.0.5";
$latestVersionFileName = "";

$directory = "../../download/updates/darwin/"
$arrayOfFiles = scandir($directory);
foreach ($arrayOfFiles as $file) {
    if (is_file($directory . $file)) {
        // Your custom code here... For example:
        $serverFileVersion = getVersionNumberFromFileName($file);
        if (isVersionNumberGreater($serverFileVersion, $clientAppVersion)) {
            $latestVersionFileName = $file;
        }
    }
}


// function declarations in my php file (used in the forEach loop)
function getVersionNumberFromFileName($fileName) {
    // extract the version number with regEx replacement
    return preg_replace("/Finance D - Tenue de livres-darwin-(x64|arm64)-|\.zip/", "", $fileName);
}

function removeAllNonDigits($semanticVersionString) {
    // use regex replacement to keep only numeric values in the semantic version string
    return preg_replace("/\D+/", "", $semanticVersionString);
}

function isVersionNumberGreater($serverFileVersion, $clientFileVersion): bool {
    // receives two semantic versions (1.0.4) and compares their numeric value (104)
    // true when server version is greater than client version (105 > 104)
    return removeAllNonDigits($serverFileVersion) > removeAllNonDigits($clientFileVersion);
}

Sử dụng so sánh thủ công này thay vì dấu thời gian tôi có thể đạt được kết quả phẫu thuật hơn. Tôi hy vọng điều này có thể cung cấp cho bạn một số ý tưởng hữu ích nếu bạn có một yêu cầu tương tự.

.

Đã trả lời ngày 2 tháng 7 năm 2021 lúc 22:37Jul 2, 2021 at 22:37

Hướng dẫn how to get the last uploaded file in php? - làm thế nào để lấy tệp tải lên cuối cùng trong php?

2

Làm thế nào để có được tệp mới nhất từ thư mục trong PHP?

$ files = scandir ('data', scandir_sort_descending);$ newest_file = $ files [0];Trước tiên, chúng tôi liệt kê tất cả các tệp trong thư mục theo thứ tự giảm dần, sau đó, bất kỳ tên nào là đầu tiên trong danh sách đó có tên tệp "lớn nhất" - và do đó là giá trị dấu thời gian lớn nhất - và do đó là mới nhất. We first list all files in the directory in descending order, then, whichever one is first in that list has the "greatest" filename — and therefore the greatest timestamp value — and is therefore the newest.

Làm thế nào tôi có thể nhận được thông tin sửa đổi cuối cùng của một tệp bằng PHP?

Hàm filemtime () trả về lần cuối cùng nội dung tệp được sửa đổi.Lưu ý: Kết quả của chức năng này được lưu trong bộ nhớ cache.Sử dụng ClearStatCache () để xóa bộ đệm.filemtime() function returns the last time the file content was modified. Note: The result of this function is cached. Use clearstatcache() to clear the cache.

Làm thế nào để xử lý tải lên tệp trong PHP?

Tải lên tệp PHP..
Định cấu hình tệp "php.ini".Đầu tiên, đảm bảo rằng PHP được cấu hình để cho phép tải lên tệp.....
Kiểm tra nếu tệp đã tồn tại.Bây giờ chúng ta có thể thêm một số hạn chế.....
Giới hạn kích thước tệp.Trường đầu vào tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "Filetoupload".....
Giới hạn loại tệp.....
Hoàn thành Tải lên Tập lệnh Php ..