Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Multiple PHP File Upload v1.1, 05 Feb. 2014
- * Super-easy config through form hidden fields!
- *
- * @author George Yanev (http://github.com/tunnckoCore)
- *
- * @license MIT License (http://opensource.org/licenses/MIT)
- * @copyright 2014, WAF Development
- */
- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
- $cntFILES = count($_FILES['cpw_whistle']['name']);
- $cntPOST = count($_POST);
- if ($cntFILES > 0 && $cntPOST > 1) {
- //echo "<pre>" . print_r($_POST, true) . "</pre>";
- //echo "<pre>" . print_r($_FILES, true) . "</pre>";
- for ($cpw = 0; $cpw < $cntFILES; $cpw++) {
- //leka normalizaciq
- $_basename = strtolower($_FILES['cpw_whistle']['name'][$cpw]);
- $_tempname = $_FILES['cpw_whistle']['tmp_name'][$cpw];
- $_errorNum = (int) $_FILES['cpw_whistle']['error'][$cpw];
- $_filesize = (int) $_FILES['cpw_whistle']['size'][$cpw];
- $_fileMime = $_FILES['cpw_whistle']['type'][$cpw];
- // podrejdame sobstven po-udoben masiv
- $_APIF['cpw_whistle'][$cpw]['tmp_name'] = $_tempname;
- $_APIF['cpw_whistle'][$cpw]['error'] = $_errorNum;
- $_APIF['cpw_whistle'][$cpw]['name'] = $_basename;
- $_APIF['cpw_whistle'][$cpw]['size'] = $_filesize;
- $_APIF['cpw_whistle'][$cpw]['type'] = $_fileMime;
- //ako ima nqkakfa PHP/serverna greshka
- //izobshto nqma smisal da produljavame
- if ($_APIF['cpw_whistle'][$cpw]['error'] == 0) {
- list($endFilename, $imageExtension) = explode(".", $_APIF['cpw_whistle'][$cpw]['name']);
- //vzimame pozvolenite razshireniq
- $allowedExtensions = explode(",", $_POST['cpw_allow_extensions']);
- // ako E napisano novo ime polzva nego
- // ako NE polzva imeto na faila koito se ka4va
- if (!empty($_POST['cpw_new_filename'])) {
- $endFilename = strip_tags(trim($_POST['cpw_new_filename']));
- }
- //postroqvame cqloto ime na ka4vashtiqt se fail
- $finalImageName = $endFilename . '.' . $imageExtension;
- //proverqvame dali failat e s nqkoe ot pozvolenite razshireniq
- //ako ne e, zapisvame string v masiva errors
- if (!in_array($imageExtension, $allowedExtensions)) {
- $response['errors'][$cpw]['filename'] = $finalImageName;
- $response['errors'][$cpw]['message'] = 'Това (' . $imageExtension . ') файлово разширение не е позволено.';
- $response['errors'][$cpw]['key'] = 'not_allowed_extension';
- $response['errors'][$cpw]['code'] = 40001;
- }
- //proverqvame dali goleminata na faila e po-golqma ot
- //poso4eniq maximum, ako e zapisvame greshka
- if ($_APIF['cpw_whistle'][$cpw]['size'] > ($_POST['cpw_max_singlefile_size'] * 1024 * 1024)) {
- $response['errors'][$cpw]['filename'] = $finalImageName;
- $response['errors'][$cpw]['message'] = 'Размера на ' . $finalImageName . ' e по-голям от определеният максимум.';
- $response['errors'][$cpw]['key'] = 'max_singlefile_size';
- $response['errors'][$cpw]['code'] = 40002;
- }
- //ako nqma greshki dotuk produljavame sus suzdavaneto
- //na direktoriqta poso4ena za upload i
- //opravqneto na neinite prava
- if (!isset($response['errors'][$cpw])) {
- //suzdavame putq do upload papkata
- $uploadDirectory = trim($_POST['cpw_uploadpath'], '/');
- $uploadPath = __DIR__ . DIRECTORY_SEPARATOR . $uploadDirectory;
- $finalPath = realpath($uploadPath);
- //proverqvame dali direktoriqta sushtestvuva
- //ako ne sushtestvuva, suzdavame q
- if (!$finalPath) {
- mkdir($uploadPath);
- chmod($uploadPath, 0777);
- $finalPath = $uploadPath;
- }
- if (move_uploaded_file($_APIF['cpw_whistle'][$cpw]['tmp_name'], $finalPath . DIRECTORY_SEPARATOR . $finalImageName)) {
- $response['success'][$cpw]['filename'] = $finalImageName;
- $response['success'][$cpw]['message'] = $uploadDirectory . '/' . $finalImageName;
- $response['success'][$cpw]['key'] = 'success_upload';
- $response['success'][$cpw]['code'] = 44444;
- } else {
- $response['errors'][$cpw]['filename'] = $finalImageName;
- $response['errors'][$cpw]['message'] = 'Грешка при move_uploaded_file().';
- $response['errors'][$cpw]['key'] = 'error_uploading_file';
- $response['errors'][$cpw]['code'] = 40003;
- }
- }
- } else {
- $response['errors'][$cpw]['filename'] = $finalImageName;
- $response['errors'][$cpw]['message'] = 'Възникнала е някаква сървърна грешка.'
- . 'Моля проверете стойностите на upload_max_filesize, '
- . 'post_max_size или max_file_uploads в използваният php.ini';
- $response['errors'][$cpw]['key'] = 'general_server_error';
- $response['errors'][$cpw]['code'] = 50000;
- }
- }
- }
- }
- echo '<ul>';
- if (isset($response['errors'])) {
- $response['errors'] = array_values($response['errors']);
- for ($i = 0; $i < count($response['errors']); $i++) {
- $data = '<li><b>Filename:</b> ' . $response['errors'][$i]['filename'] . ' | ';
- $data .= '<b>Keycode:</b> ' . $response['errors'][$i]['key'] . ' | ';
- $data .= '<b>Message:</b> ' . $response['errors'][$i]['message'] . '</li>';
- echo '<div style="color: red;">'.$data.'</div>';
- }
- }
- if (isset($response['success'])) {
- $response['success'] = array_values($response['success']);
- for ($i = 0; $i < count($response['success']); $i++) {
- $data = '<li><b>Filename:</b> '.$response['success'][$i]['filename'].' | ';
- $data .= '<b>Path2image:</b> '.$response['success'][$i]['message'].'</li>';
- echo '<div style="color: green;">'.$data.'</div>';
- }
- }
- echo '</ul>';
- /**
- * Za pove4e informaciq ot otgovora:
- * echo '<pre>' . print_r($response, true) . '</pre>';
- */
- ?>
- <form action="" method="post" enctype="multipart/form-data">
- <input type="text" name="cpw_new_filename" placeholder="New filename">
- <input type="hidden" name="cpw_uploadpath" value="simpleupload-files">
- <input type="hidden" name="cpw_max_singlefile_size" value="1">
- <input type="hidden" name="cpw_allow_extensions" value="png,jpg,jpeg,gif">
- <input type="file" name="cpw_whistle[]" required multiple accept="image/*">
- <button type="submit">Прикачи</button>
- </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement