Как идиот, я согласился создать форму для клиента (я обычно просто занимаюсь кодированием HTML и CSS), которая включает PHP для отправки sendmail / file.Я не думал, что это будет слишком сложно из-за множества онлайн-уроков, и я все равно хотел начать изучать PHP.Я был откровенен с клиентом, что у меня нет опыта работы с PHP, и дал значительную скидку, поскольку я рассматриваю это как возможность обучения больше, чем работа по контракту.
У меня форма функционирует как две отдельные части во время разработки:
- sendmail.php
- file_upload.php.
Так что я очень горжусь собой.Однако сейчас я пытаюсь переименовать загруженные файлы следующим образом:
ClientCompanyName_ProjectName_FileName_Increment.Extension
Да, это кажется длинным, но клиент хочет ОЧЕНЬ ПРОСТОЙ способ дифференциации отдельных файлов в одном каталоге (я не знаю, как создатьновые уникальные каталоги, когда клиенты клиента загружают новые файлы).
Как я уже говорил, у меня была функция file_upload.php
, работающая до того, как я пытался переименовать файлы.Как только я добавил код, который, как я ДУМАЛ, переименовал файл, извлекая из FORM
полей ввода, я сломал PHP и теперь теряюсь, как заставить его работать как нужно.
Простая форманиже, и php, который я имею для form_input.php ниже.
<form action="./upload.php" method="post" enctype="multipart/form-data">
<label for="company">Company Name:</label><input type="text" name="company" id="company" />
<br />
<label for="proj_name">Project Name:</label><input type="text" name="proj_name" id="proj_name" />
<br />
<label for="file">Select a File:</label><input type="file" name="userfile" id="file" />
<br />
<input type="submit" name="submit" id="submit" value="Upload File" />
</form>
<?php
if (isset($_POST['submit'])) {
// Configuration - Script Options
$filename = $_FILES['userfile']['name']; // Get the name of the file (including file extension
$file_basename = substr($filename, 0, strripos($filename, '.')); // Get file name minus extension
$file_ext = substr($filename, strripos($filename, '.')); // Get file extension
$filesize = $_FILES['file']['size']; // Get file size
$allowed_file_types =
array('.jpg','.jpeg','.gif','.bmp','.png','.pdf','.doc','.docx','.psd');
// These will be the types of files that are allowed to
// pass the upload validation
$file_counter = 1; // used to increment filename if name already exists
$company = $_REQUEST['company'];
$project = $_REQUEST['proj_name'];
// File renaming and upload functionality
if (in_array($file_ext,$allowed_file_types) && ($filesize < 10000001)) {
// Checks to make sure uploaded file(s) is an allowed file
// type AND within the allowable file size (currently 10MB)
// Rename File
$newfilename = $company . '_' . $proj_name . '_' . $file_basename;
// Rename file as (CompanyName_FileName_DateStamp)
// Loop until an available file name is found
while (file_exists( "file_uploads/" . $newfilename ))
$finalfilename = $newfilename . '_' . $file_counter++ . $file_ext;
// This will be the File Name shown in the upload destination directory
// (currently the "file_uploads" directory)
if (file_exists("file_uploads/" . $finalfilename)) {
// file already exists error
echo "This file already exists. Please rename this file and upload again if necessary.";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], "file_uploads/" . $finalfilename);
echo "File uploaded successfully.";
}
} elseif (empty($file_basename)) {
// file selection error
echo "Please select a file to upload.";
} elseif ($filesize > 10000000) {
//file size error
echo "The file you are trying to upload is too large. Files must be no larger than 10MB.";
} else {
// file type error
echo "The file you attempted to upload is not allowed. You can only upload the following types of files: .jpg, .jpeg, .gif, .bmp, .png, .pdf, .doc, .docx, and .psd.";
unlink($_FILES["file"]["tmp_name"]);
}
}
?>
Когда я пытаюсь загрузить файл сейчас, я получаю варианты следующей ошибки:
Parseошибка: синтаксическая ошибка, неожиданный T_ELSE в /home4/yourpass/public_html/upload/upload.php в строке 27
Когда я исправляю одну ошибку, в другой строке возникает новая похожая ошибка, и, наконец,Я получаю сообщение об ошибке Файл уже существует , но в каталоге на сервере нет повторяющегося файла.
Для тех из вас, кто хотел бы попробовать живую версию этой формы, выможете сделать это по этой ссылке:
http://www.niagarathistle.com/upload/form_upload.html
Любая помощь или толчок в правильном направлении будет принята с благодарностью.Спасибо!
PS: Извините за форматирование кода.Я все еще пытаюсь понять, как ЛЕГКО ввести мой код и правильно отформатировать его с помощью Markdown.