src/Tus/Server.php
protected function handleConcatenation(string $fileName, string $filePath) : HttpResponse
    {
        $partials  = $this->getRequest()->extractPartials();
        $uploadKey = $this->getUploadKey();
        $files     = $this->getPartialsMeta($partials);
        $filePaths = array_column($files, 'file_path');
        $location  = $this->getRequest()->url() . $this->getApiPath() . '/' . $uploadKey;

        $file = $this->buildFile([
            'name' => $fileName,
            'offset' => 0,
            'size' => 0,
            'file_path' => $filePath,
            'location' => $location,
        ])->setFilePath($filePath)->setKey($uploadKey);

        $file->setOffset($file->merge($files));

        // Verify checksum.
        $checksum = $this->getServerChecksum($filePath);

        if ($checksum !== $this->getClientChecksum()) {
            return $this->response->send(null, self::HTTP_CHECKSUM_MISMATCH);
        }

        $file->setChecksum($checksum);
        $this->cache->set($uploadKey, $file->details() + ['upload_type' => self::UPLOAD_TYPE_FINAL]);

        // Cleanup.
        if ($file->delete($filePaths, true)) {
            $this->cache->deleteAll($partials);
        }

        $this->event()->dispatch(
            UploadMerged::NAME,
            new UploadMerged($file, $this->getRequest(), $this->getResponse())
        );

        return $this->response->send(
            ['data' => ['checksum' => $checksum]],
            HttpResponse::HTTP_CREATED,
            [
                'Location' => $location,
            ]
        );
    }
protected function handleConcatenation(string $fileName, string $filePath) : HttpResponse
    {
        $partials  = $this->getRequest()->extractPartials();
        $uploadKey = $this->getUploadKey();
        $files     = $this->getPartialsMeta($partials);
        $filePaths = array_column($files, 'file_path');
        $location  = $this->getRequest()->url() . $this->getApiPath() . '/' . $uploadKey;

        $file = $this->buildFile([
            'name' => $fileName,
            'offset' => 0,
            'size' => 0,
            'file_path' => $filePath,
            'location' => $location,
        ])->setFilePath($filePath)->setKey($uploadKey);

        $file->setOffset($file->merge($files));

        // Verify checksum.
        $checksum = $this->getServerChecksum($filePath);

        if ($checksum !== $this->getClientChecksum()) {
            return $this->response->send(null, self::HTTP_CHECKSUM_MISMATCH);
        }

        $file->setChecksum($checksum);
        $this->cache->set($uploadKey, $file->details() + ['upload_type' => self::UPLOAD_TYPE_FINAL]);

        // Cleanup.
        if ($file->delete($filePaths, true)) {
            $this->cache->deleteAll($partials);
        }

        $this->event()->dispatch(
            UploadMerged::NAME,
            new UploadMerged($file, $this->getRequest(), $this->getResponse())
        );

        return $this->response->send(
            ['data' => ['checksum' => $checksum]],
            HttpResponse::HTTP_CREATED,
            [
                'Location' => $location,
            ]
        );
    }
protected function handleConcatenation ( string $ fileName , string $ filePath ) : HttpResponse { $ partials = $ this -> getRequest ( ) -> extractPartials ( ) ; $ uploadKey = $ this -> getUploadKey ( ) ; $ files = $ this -> getPartialsMeta ( $ partials ) ; $ filePaths = array_column ( $ files , 'file_path' ) ; $ location = $ this -> getRequest ( ) -> url ( ) . $ this -> getApiPath ( ) . '/' . $ uploadKey ; $ file = $ this -> buildFile ( [ 'name' => $ fileName , 'offset' => 0 , 'size' => 0 , 'file_path' => $ filePath , 'location' => $ location , ] ) -> setFilePath ( $ filePath ) -> setKey ( $ uploadKey ) ; $ file -> setOffset ( $ file -> merge ( $ files ) ) ; // Verify checksum. $ checksum = $ this -> getServerChecksum ( $ filePath ) ; if ( $ checksum !== $ this -> getClientChecksum ( ) ) { return $ this -> response -> send ( null , self :: HTTP_CHECKSUM_MISMATCH ) ; } $ file -> setChecksum ( $ checksum ) ; $ this -> cache -> set ( $ uploadKey , $ file -> details ( ) + [ 'upload_type' => self :: UPLOAD_TYPE_FINAL ] ) ; // Cleanup. if ( $ file -> delete ( $ filePaths , true ) ) { $ this -> cache -> deleteAll ( $ partials ) ; } $ this -> event ( ) -> dispatch ( UploadMerged :: NAME , new UploadMerged ( $ file , $ this -> getRequest ( ) , $ this -> getResponse ( ) ) ) ; return $ this -> response -> send ( [ 'data' => [ 'checksum' => $ checksum ] ] , HttpResponse :: HTTP_CREATED , [ 'Location' => $ location , ] ) ; }
Handle file concatenation.

@param string $fileName
@param string $filePath

@return HttpResponse
Handle file concatenation .