FileUpload\FileUpload::processAll PHP Method

processAll() public method

Process entire submitted request
public processAll ( ) : array
return array Files and response headers
    public function processAll()
    {
        $content_range = $this->getContentRange();
        $size = $this->getSize();
        $this->files = array();
        $upload = $this->upload;
        if ($this->logger) {
            $this->logger->debug('Processing uploads', array('Content-range' => $content_range, 'Size' => $size, 'Upload array' => $upload, 'Server array' => $this->server));
        }
        if ($upload && is_array($upload['tmp_name'])) {
            foreach ($upload['tmp_name'] as $index => $tmp_name) {
                if (empty($tmp_name)) {
                    // Discard empty uploads
                    continue;
                }
                $this->files[] = (object) (array) $this->process($tmp_name, $upload['name'][$index], $size ? $size : $upload['size'][$index], $upload['type'][$index], $upload['error'][$index], $index, $content_range);
            }
        } else {
            if ($upload && !empty($upload['tmp_name'])) {
                $this->files[] = $this->process($upload['tmp_name'], $upload['name'], $size ? $size : (isset($upload['size']) ? $upload['size'] : $this->getContentLength()), isset($upload['type']) ? $upload['type'] : $this->getContentType(), $upload['error'], 0, $content_range);
            } else {
                if ($upload && $upload['error'] != 0) {
                    $file = $this->getFileContainer();
                    $file->error = $this->getMessage($upload['error']);
                    $file->error_code = $upload['error'];
                    $this->files[] = $file;
                }
            }
        }
        return array($this->files, $this->getNewHeaders($this->files, $content_range));
    }

Usage Example

Beispiel #1
0
 public function upload(Request $req, Response $res)
 {
     if (!$req->isPost()) {
         throw new \Chalk\Exception("Upload action only accepts POST requests");
     }
     $dir = $this->chalk->config->dataDir->dir('upload', true);
     $uploader = new FileUpload($_FILES['files'], $req->servers());
     $uploader->setPathResolver(new PathResolver\Simple($dir->name()));
     $uploader->setFileSystem(new FileSystem\Simple());
     list($uploads, $headers) = $uploader->processAll();
     foreach ($uploads as $upload) {
         if (isset($upload->path)) {
             $content = isset($req->route['params']['content']) ? $this->em($req->info)->id($req->route['params']['content']) : $this->em($req->info)->create();
             $view = $content->isNew() ? 'content/thumb' : 'content/card-upload';
             if (!$this->em->isPersisted($content)) {
                 $content->newFile = new \Coast\File($upload->path);
                 $this->em->persist($content);
             } else {
                 $content->move(new \Coast\File($upload->path));
             }
             $this->em->flush();
             unset($upload->path);
             $upload->html = $this->view->render($view, ['content' => $content, 'covered' => true, 'isEditAllowed' => (bool) $req->isEditAllowed] + (array) $req->view, 'core')->toString();
         }
     }
     return $res->headers($headers)->json(['files' => $uploads]);
 }
All Usage Examples Of FileUpload\FileUpload::processAll