2017-03-03 34 views
0

我嘗試使用Tus.IO,但調試起來很複雜。在symfony2網站中集成PhpTus

http://tus.io/

我會在我的網站與FPM模式Symfony2.8/Apache2.4/PHP5.6由PHP的土族服務器集成。

  1. 這裏是我的Apache虛擬主機(我不是在網站上的根,但在/上傳子文件夾):

    <VirtualHost *:80> 
        ServerAdmin [email protected] 
    
        # 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. 我已經通過作曲家部署PhpTus在供應商文件夾中。

  3. 我已配置的routing.yml像下面

    upload_tus_io: 路徑:/ hebergeurs/V1/upload_tus 默認:{_controller:UploadBcdiBundle:上載:uploadTusIO}

  4. 我已經創建控制器這樣

    * Url : /hebergeurs/V1/upload_tus 
    * 
    * @param  Symfony\Component\HttpFoundation\Request    $request      Requête http en cours. 
    * 
    * @return  Symfony\Component\HttpFoundation\Response    $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 \PhpTus\Server($upload_data_path, 
                       '/hebergeurs/V1/upload_tus', 
                       array('prefix' => 'php-tus') 
         ); 
    
         // Run server 
         $response = $server->process(true); 
    } 
    

在客戶端,我使用土族上傳(Python客戶端)是這樣的:

土族上傳DATA.zip http://10.133.169.138/upload/hebergeurs/V1/upload_tus --chunk大小256000 --header授權 '富'

,但我這個錯誤:

[2017-03-03 16:50:00,551] INFO Creating file endpoint Traceback (most recent call last): File "/usr/local/bin/tus-upload", line 11, in load_entry_point('tus.py==1.2.0', 'console_scripts', 'tus-upload')() File "/usr/local/lib/python2.7/dist-packages/tus.py", line 83, in _cmd_upload metadata=args.metadata) File "/usr/local/lib/python2.7/dist-packages/tus.py", line 162, in create raise TusError("Create failed: %s" % response) tus.TusError: Create failed:

你有idead 。

此致敬禮。

回答

0

最後我解決了我的問題,但沒有創建.htaccess文件來重定向請求。

我已經處理一樣,在routing.yml中:

# 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 PhpTus\Client(); 
$client->setFilename($filename); 
$client->setEndPoint($endpoint); 
$client->upload(); 

不要忘了破解Client.php接受自簽名certiticates:

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

感謝我。