Я довольно новичок в мире php и создаю систему отслеживания запасов для одного из моих дополнительных предприятий. Большинство основ работают, но у меня возникают проблемы с моей функцией «загрузить pdf». Несмотря на то, что он работает и загружает файл pdf в его целевое местоположение, я не могу получить имя файла ($ docid) целым числом, которое автоматически увеличивается каждый раз, когда происходит отправка, чтобы файлы никогда не имели одно и то же имя. Ниже приведен код, который у меня работает:
$pdfPath = "/Documents/TEST/";
$maxSize = 102400000000;
$docid = TEST;
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['upload_pdf'])) {
if (is_uploaded_file($_FILES['filepdf']['tmp_name'])) {
if ($_FILES['filepdf']['type'] != "application/pdf") {
echo '<p>The file is not in PDF</p>';
} else if ($_FILES['filepdf']['size'] > $maxSize) {
echo '<p class="error">File is too big! Max size is =' . $maxSize . 'KB</p>';
} else {
$menuName = "Order_Receipt_".$docid.".pdf";
$result = move_uploaded_file($_FILES['filepdf']['tmp_name'], $pdfPath . $menuName);
if ($result == 1) {
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://localhost/website/enter_new_order_success.html">';
} else {
echo '<p class="error">Error</p>';
}
}
}
Я знаю, что мне нужен какой-то цикл для автоматического увеличения этой переменной $ docid, но я не могу понять это. Я прочитал эту тему, но автоинкремент с оператором if сбивает меня с толку. Любая помощь будет принята с благодарностью.
ура
Ну, если вы не сохраните записи для отслеживания в базе данных или аналогичной, вы можете проверить, какие записи у вас есть в папке загрузки, и увеличить их на единицу.
Функция glob полезна для этого:
http://php.net/manual/en/function.glob.php
$myFiles = sort(glob('/Documents/TEST/*.pdf')); // returns an array of pdf files in the target folder. Using sort to sort the array e.g. file_1_.pdf,file_2_.pdf,file_3_.pdf, etc
//last element
$lastFile = end($myFiles); //returns the last file in the array
//get the number and increment it by one
$number = explode('_',$lastFile);
$newNumber = $number[1] + 1; //add this to the name of your uploaded php file.
$pdfUploadedFile= "Order_Receipt_".$newNumber."_.pdf";
Как указано в комментариях … Я считаю, что лучше называть ее сгенерированной строкой времени. А также не забывайте цитаты вокруг ваших строк.
$docid = TEST;
should be:
$docid = 'TEST';
редактировать
Еще лучше было бы назвать это в отформатированной дате, я полагаю.
$pdfUploadedFile= "Order_Receipt_".date("Y-m-d-H-i-s").".pdf"; // will output something like Order_receipt_2014-09-24-11-14-44.pdf
Других решений пока нет …