我尝试使用tus.io,但调试很复杂。
http://tus.io/
我将以symfony2.8/apache2.4/php5.6在fpm模式下整合php-tus服务器。
-
这是我的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>
-
我已经通过Composer部署了Phptus。
-
我已经配置了路由。
upload_tus_io:路径:/hebergeurs/v1/upload_tus默认值:{_controller:uploadbcdibundle:upload:uploadTusio}
-
我已经创建了这样的控制器
* 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);
感谢我。