JohnCMS | Upload

4.5K
.
то смысл файл получать по прямой ссылке
статика она и в африке статика
имея на руках адрес к файлу не сложно сгенерить к нему заголовки, расширение то в адресе указано.
Delphinum,у меня что то похожее, только проверкой и генерацией в сл. отсутствия занимается прослойка между хранилищем и логикой запрашивающей аватарки бгшки и т.д.
app::storage()->setUserUploadDir('public');
        app::storage()->avatar = 'profile/avatars';
        app::storage()->background = 'profile/background';
        app::storage()->audioFile = 'music';
        app::storage()->videoFile = 'video/file';
        app::storage()->videoScreen = 'video/screen';
        app::storage()->forum = 'forum';
        app::storage()->systemImages = 'system/images';
        app::storage()->tmpUpload('upload');


        app::storage()->registerMethod('avatar', function($id, $type = false)
        {

            if($type==true){
                return app::storage()->fileExists(app::storage()->path('avatar').'/'.$id.'.png') ?  '/'.app::storage()->path('avatar').'/'.$id.'.png' : null;

            }else{
                return '/'.app::storage()->path('avatar').'/'.$id.'.png';

            }
        } );

        app::storage()->registerMethod('defaultAvatar', function()
        {
            
                return '/'.app::storage()->path('systemImages').'/noavatar.png';

        } );
.
(\/)____o_O____(\/)
вот запилил аплоад
критикуйте , пока не до конца оттестил, и еще надо пару методов написать
Прикрепленные файлы:
.
Пожалуй напишу свой вариант. Загрузка фалов интересная тема)
Заодно покажу Вам свои знания.
.
Koenig, некошерно забивать глобальную область своими function autoload, лучше делать сразу так:
spl_autoload_register(function($class){                                            
    $file = 'classes/' . $class . '.php';                                          
    file_exists($file) ? require_once($file) : exit('Underfined class - ' . $class);
});

А еще лучше сразу через composer, если уж он у вас используется.
.
Koenig,
echo '<form action="?" enctype="multipart/form-data" method="post">
...

любите вы извращения. Почему не:
include 'form.html';

?
.
Koenig, а еще кошернее сразу разделять на модель и представление:
<form action="?" enctype="multipart/form-data" method="post">                   
    <div><input type="file" name="file[]" /></div>                              
    <div><input type="file" name="file[]" /></div>                              
    <div><input type="file" name="file[]" /></div>                              
    <div><input type="file" name="test" /></div>                                                               
    <div><input type="file" name="file2[]" /></div>                             
    <div><input type="file" name="file2[]" /></div>                             
    <div><input type="file" name="file2[]" /></div>                             
                                                                                                               
    <div><input type="submit" name="submit" value="submit" /></div>             
</form>                                                                                                        
                                                                                                               
<pre>                                                                                                          
    <?php                                                                                                      
      print_r($viewModel, 1);                                                                                  
    ?>                                                                                                         
</pre>


if (count($_FILES) > 0) {                                                       
    #echo '<pre>' . print_r($_FILES, 1) . '</pre>';                             
    $upload = new Kupload('load');                                              
    $viewModel = $upload->filestorage->map();                                                                                                          
}                                                                                                              
else{                                                                                                          
  $viewModel = [];                                                                                             
}                                                                                                              
                                                                                                               
include 'form.phtml';
.
Delphinum
Koenig, Kfile::data
такие имена допустимо использовать только в случае, если метод является как setter так и getter, на пример:
public function size($size = null){
  if(!is_null($size)){
    $this->size = $size;
  }
  return $this->size;
}

у тебя это чистый getter, потому надо getData.

Метод generatehash лучше сделать protected, так как он не будет вызываться из вне класса. Я бы еще переименовал его в generateHash.

public function __construct($file)

Тут нужно либо документировать, что такое $file, либо изменить имя аргумента на $filePath или $fileAddress.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Я думаю, что уже, как на званном ужине, где познакомился и душевно разговорился с хорошей девушкой, пора перейти от теории в постель к практике

1) Запилите отдельный реп на Гитхабе.
2) Залейте туда скелет обсуждаемого предмета. Это может быть всего пустые папки и composer.json с прописанными namespaces в корне, чтоб любой мог без анальных мук затестировать.
3) Ну и далее дерзайте. каждый из предложивших свое решение может иметь отдельную ветку.
В общую ветку сливаете только те решения, о которых однозначно договорились.

З.Ы.
Все ветки в Гитхабе должны придерживаться скелета, то есть где валяются файлы и Namespace.
Хотя разумеется. каждый сам может запилить себе composer.json с нужными зависимостями и неймспейсами.
Главное, чтоб потом то, о чем все договорились, сливалось в общую ветку.
.
(\/)____o_O____(\/)
Delphinum, черновик же
.
(\/)____o_O____(\/)
AlkatraZ, да тут как бы тоже без анальных мук, скачал, распаковал, запустил
Всего: 140