File modules/util/Upload.class.php

Last commit: Tue Feb 14 00:22:02 2023 +0100	Jan Dankert	Fix: Create text objects without the need for an upload.
1 <?php 2 // OpenRat Content Management System 3 // Copyright (C) 2002-2012 Jan Dankert, cms@jandankert.de 4 // 5 // This program is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU General Public License 7 // as published by the Free Software Foundation; either version 2 8 // of the License, or (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with this program; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19 namespace util; 20 use InvalidArgumentException; 21 use Request; 22 23 /** 24 * Methoden fuer den Upload einer Datei 25 * 26 * @author $Author$ 27 * @version $Revision$ 28 * @package openrat.services 29 */ 30 class Upload 31 { 32 public $filename; 33 public $extension; 34 public $value; 35 public $size; 36 public $mimeType; 37 38 public $parameterName; 39 40 public static $DEFAULT_PARAM_NAME = 'file'; 41 42 43 /** 44 * Bearbeitet den Upload einer Datei.<br> 45 * 46 * @return Upload 47 */ 48 function __construct($name = 'file') // Konstruktor 49 { 50 $this->parameterName = $name; 51 } 52 53 /** 54 * Provision of an uploaded file. 55 */ 56 public function processUpload() 57 { 58 $name = $this->parameterName; 59 60 if (!$this->isAvailable()) 61 throw new InvalidArgumentException('No file received under the key "' . $name . '"'); 62 63 $uFile = $_FILES[$name]; 64 65 if (!isset($uFile['tmp_name'])) 66 throw new InvalidArgumentException('No temporary filename found for uploaded file key "' . $name . '"'); 67 68 if (!is_file($uFile['tmp_name'])) 69 throw new InvalidArgumentException('Not a file: ' . $uFile['tmp_name']); 70 71 switch ($uFile['error']) { 72 case UPLOAD_ERR_OK: 73 break; 74 75 case UPLOAD_ERR_INI_SIZE: 76 throw new InvalidArgumentException('Uploaded file is bigger than allowed in server configuration'); 77 78 case UPLOAD_ERR_FORM_SIZE: 79 throw new InvalidArgumentException('Uploaded file is bigger than allowed in form'); 80 81 default: 82 throw new InvalidArgumentException('Error code while uploading file: ' . $uFile['error']); 83 } 84 85 $this->mimeType = $uFile['type']; 86 87 $this->size = filesize($uFile['tmp_name']); 88 89 $fh = fopen($uFile['tmp_name'], 'r'); 90 91 $this->value = fread($fh, $this->size); 92 fclose($fh); 93 94 $this->filename = $uFile['name']; 95 $this->extension = ''; 96 97 $p = strrpos($this->filename, '.'); // Letzten Punkt suchen 98 99 if ($p !== false) // Wennn letzten Punkt gefunden, dann dort aufteilen 100 { 101 $this->extension = substr($this->filename, $p + 1); 102 $this->filename = substr($this->filename, 0, $p); 103 } 104 } 105 106 /** 107 * Is this upload available? 108 * @param $name Request variable name 109 * @return bool <code>true</code> if upload is available 110 */ 111 public function isAvailable() 112 { 113 $name = $this->parameterName; 114 115 return isset($_FILES[$name]) && is_array($_FILES[$name]) && $_FILES[$name]['tmp_name']; 116 } 117 }
Download modules/util/Upload.class.php
History Tue, 14 Feb 2023 00:22:02 +0100 Jan Dankert Fix: Create text objects without the need for an upload. Wed, 11 Nov 2020 23:24:28 +0100 Jan Dankert Fixing editing value of files,images,texts. Sat, 22 Feb 2020 23:58:02 +0100 Jan Dankert Refactoring: Namespacing for module 'util'. Thu, 7 Nov 2019 21:56:12 +0100 Jan Dankert New: Uploading files wit a pure value (for API usage). Fri, 11 Jan 2019 22:28:11 +0100 Jan Dankert Fix: Uploads von Bildern müssen auch als Bild gespeichert werden. Tue, 18 Dec 2018 23:57:20 +0100 Jan Dankert Fileupload war kaputt, weil das global Array $_FILES heißt. Das wurde vorher wohl mal in $FILES kopiert, das wird aber nicht mehr gemacht. Daher passierte beim Upload nichts mehr :( Sat, 16 Dec 2017 23:21:31 +0100 Jan Dankert Eigenes Modul für alle Util-Klassen.