Symfony2网站中的Phptus集成



我尝试使用tus.io,但调试很复杂。

http://tus.io/

我将以symfony2.8/apache2.4/php5.6在fpm模式下整合php-tus服务器。

  1. 这是我的apache vhost(我的网站不在root上,而是上传子文件夹):

    <VirtualHost *:80>
       ServerAdmin webmaster@localhost
       #  DocumentRoot /var/www/hebergementbcdi_upload/web
       Alias /upload /var/www/hebergementbcdi_upload/web
       <Directory "/var/www/hebergementbcdi_upload/web">
          <IfModule mod_proxy_fcgi.c>
           <Files ~ (.php$)> 
              SetHandler "proxy:fcgi://127.0.0.1:9000"
            </Files>
          </IfModule>
           Header set Access-Control-Allow-Origin http://10.133.169.137
           Header set Access-Control-Allow-Headers "Authorization"
           AllowOverride All
           Allow from All
           Options -Includes -ExecCGI
       </Directory>
    </VirtualHost>
    
  2. 我已经通过Composer部署了Phptus。

  3. 我已经配置了路由。

    upload_tus_io:路径:/hebergeurs/v1/upload_tus默认值:{_controller:uploadbcdibundle:upload:uploadTusio}

  4. 我已经创建了这样的控制器

     * Url : /hebergeurs/V1/upload_tus
     *
     * @param       SymfonyComponentHttpFoundationRequest                $request                        Requête http en cours.
     *
     * @return      SymfonyComponentHttpFoundationResponse               $response                       Réponse http au format JSON
     */
     public function uploadTusIOAction(Request $request) {
            $upload_data_path =  $this->getParameter('upload_data_path');
            // Create and configure server
            $server = new PhpTusServer($upload_data_path,
                                                                    '/hebergeurs/V1/upload_tus',
                                                                    array('prefix' => 'php-tus')
           );
            // Run server
            $response = $server->process(true);
    }
    

在客户端,我使用tus-upload(python client)这样:

tus-upload data.zip http://10.133.169.138/upload/hebergeurs/v1/upload_tus -Chunk-Size 256000 -Header授权'foo'

但是我这个错误:

[2017-03-03 16:50:00,551]信息创建文件端点跟踪(大多数 最近的电话):文件"/usr/local/bin/tus-upload",第11行,in load_entry_point('tus.py == 1.2.0','console_scripts','tus-upload')()文件 "/usr/local/lib/python2.7/dist-packages/tus.py",第83行,in _cmd_upload metadata = args.metadata)文件"/usr/local/lib/python2.7/dist-packages/tus.py",第162行,在创建中 提升Tuserror("创建失败:%s"%响应)tus.tuserror:创建失败:

您有任何IDEAD。

最好的问候。

最后,我已经解决了我的问题而没有创建.htaccess文件重定向请求。

我在routing.ym中进行了这样的处理:

# Upload with TUS.io
upload_tus_io:
    path:   /hebergeurs/V1/upload_tus/files/{upload_filename}
    defaults: { _controller: UploadBcdiBundle:Upload:uploadTusIO }
    methods:  ['POST','PATCH']
    requirements:
        upload_filename: "[a-z0-9]*"

然后我使用了php tus.io客户端,因为python客户端不适用于PHP后端。

require_once __DIR__ . '/php-tus/src/PhpTus/Client.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Abort.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/BadHeader.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Curl.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/File.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Max.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Request.php';
require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Required.php';
$filename = '/home/admin/DATA.zip';
$endpoint = 'https://<my_ip>/upload/hebergeurs/V1/upload_tus/files/';
$client = new PhpTusClient();
$client->setFilename($filename);
$client->setEndPoint($endpoint);
$client->upload();

不要忘记hack client.php接受自我签名的证书:

// Disable SSL vérification
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);

感谢我。

最新更新