aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Wall_attach.php
diff options
context:
space:
mode:
authorzotlabs <mike@macgirvin.com>2017-07-13 17:04:58 -0700
committerzotlabs <mike@macgirvin.com>2017-07-13 17:04:58 -0700
commitc940d8d7ca25691519d400ad19aa22b5611fc2e7 (patch)
treeb33805ab6561bc312845be52c9eb0a141e60912a /Zotlabs/Module/Wall_attach.php
parentaa70cbbf21950e37ab9b5198de76ded0f1c8351d (diff)
downloadvolse-hubzilla-c940d8d7ca25691519d400ad19aa22b5611fc2e7.tar.gz
volse-hubzilla-c940d8d7ca25691519d400ad19aa22b5611fc2e7.tar.bz2
volse-hubzilla-c940d8d7ca25691519d400ad19aa22b5611fc2e7.zip
implement chunked uploads on the wall; making it work painlessly on /cloud was attempted but will not be implemented today. That presents some interesting dragons to slay.
Diffstat (limited to 'Zotlabs/Module/Wall_attach.php')
-rw-r--r--Zotlabs/Module/Wall_attach.php64
1 files changed, 58 insertions, 6 deletions
diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php
index c6fe7518e..5b3768da9 100644
--- a/Zotlabs/Module/Wall_attach.php
+++ b/Zotlabs/Module/Wall_attach.php
@@ -8,10 +8,21 @@ require_once('include/photos.php');
class Wall_attach extends \Zotlabs\Web\Controller {
+ function init() {
+ logger('request_method: ' . $_SERVER['REQUEST_METHOD'],LOGGER_DATA,LOG_INFO);
+ logger('wall_attach: ' . print_r($_REQUEST,true),LOGGER_DEBUG,LOG_INFO);
+ logger('wall_attach files: ' . print_r($_FILES,true),LOGGER_DEBUG,LOG_INFO);
+ // for testing without actually storing anything
+ // http_status_exit(200,'OK');
+ }
+
+
function post() {
$using_api = false;
-
+
+ $result = [];
+
if($_REQUEST['api_source'] && array_key_exists('media',$_FILES)) {
$using_api = true;
}
@@ -28,7 +39,44 @@ class Wall_attach extends \Zotlabs\Web\Controller {
if(! $channel)
killme();
-
+
+ $matches = [];
+ $partial = false;
+
+ $x = preg_match('/bytes (\d*)\-(\d*)\/(\d*)/',$_SERVER['HTTP_CONTENT_RANGE'],$matches);
+ if($x) {
+ // logger('Content-Range: ' . print_r($matches,true));
+ $partial = true;
+ }
+
+ if($partial) {
+ $x = save_chunk($channel,$matches[1],$matches[2],$matches[3]);
+ if($x['partial']) {
+ header('Range: bytes=0-' . (($x['length']) ? $x['length'] - 1 : 0));
+ json_return_and_die($result);
+ }
+ else {
+ $_FILES['userfile'] = [
+ 'name' => $x['name'],
+ 'type' => $x['type'],
+ 'tmp_name' => $x['tmp_name'],
+ 'error' => $x['error'],
+ 'size' => $x['size']
+ ];
+ }
+ }
+ else {
+ if(! array_key_exists('userfile',$_FILES)) {
+ $_FILES['userfile'] = [
+ 'name' => $_FILES['files']['name'],
+ 'type' => $_FILES['files']['type'],
+ 'tmp_name' => $_FILES['files']['tmp_name'],
+ 'error' => $_FILES['files']['error'],
+ 'size' => $_FILES['files']['size']
+ ];
+ }
+ }
+
$observer = \App::get_observer();
@@ -51,10 +99,14 @@ class Wall_attach extends \Zotlabs\Web\Controller {
if($using_api)
return $s;
-
- echo $s;
- killme();
-
+
+
+ if($partial)
+ header('Range: bytes=0-' . (($x['length']) ? $x['length'] - 1 : 0));
+ $result['message'] = $s;
+ json_return_and_die($result);
+
}
+
}