我尝试使用Tus.IO,但调试起来很复杂。
我会在我的网站中使用Symfony2.8 / Apache2.4 / PHP5.6在FPM模式下整合php-tus服务器。
这是我的apache vhost(我的网站不在root上,但在/ upload子文件夹中):
<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>
我已经通过composer在供应商文件夹中部署了PhpTus。
我已经配置了routing.yml,如下所示
upload_tus_io: 路径:/ hebergeurs / V1 / upload_tus 默认值:{_ control:UploadBcdiBundle:Upload:uploadTusIO}
我已经创建了这样的控制器
* 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);
}
在客户端上,我使用tus-upload(Python客户端),如下所示:
tus-upload DATA.zip http://10.133.169.138/upload/hebergeurs/V1/upload_tus --chunk-size 256000 --header Authorization&#39; foo&#39;
但我有这个错误:
[2017-03-03 16:50:00,551] INFO创建文件端点Traceback(大多数 最近的呼叫最后):文件&#34; / usr / local / bin / tus-upload&#34;,第11行,in load_entry_point(&#39; tus.py == 1.2.0&#39;,&#39; console_scripts&#39;,&#39; tus-upload&#39;)()文件 &#34; /usr/local/lib/python2.7/dist-packages/tus.py" ;,第83行,在 _cmd_upload metadata = args.metadata)File&#34; /usr/local/lib/python2.7/dist-packages/tus.py" ;,第162行,在创建 引发TusError(&#34;创建失败:%s&#34;%响应)tus.TusError:创建失败:
你有没有想法。
最好的问候。
答案 0 :(得分: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 Backend一起使用。
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接受自签名的证明:
// Disable SSL vérification
curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
谢谢我。