summaryrefslogtreecommitdiffstats
path: root/apps/files/ajax/upload.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/ajax/upload.php')
-rw-r--r--apps/files/ajax/upload.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php
new file mode 100644
index 00000000000..c60e1a3752a
--- /dev/null
+++ b/apps/files/ajax/upload.php
@@ -0,0 +1,64 @@
+<?php
+
+// Init owncloud
+
+
+// Firefox and Konqueror tries to download application/json for me. --Arthur
+OC_JSON::setContentTypeHeader('text/plain');
+
+OC_JSON::checkLoggedIn();
+
+if (!isset($_FILES['files'])) {
+ OC_JSON::error(array("data" => array( "message" => "No file was uploaded. Unknown error" )));
+ exit();
+}
+foreach ($_FILES['files']['error'] as $error) {
+ if ($error != 0) {
+ $l=OC_L10N::get('files');
+ $errors = array(
+ UPLOAD_ERR_OK=>$l->t("There is no error, the file uploaded with success"),
+ UPLOAD_ERR_INI_SIZE=>$l->t("The uploaded file exceeds the upload_max_filesize directive in php.ini").ini_get('upload_max_filesize'),
+ UPLOAD_ERR_FORM_SIZE=>$l->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"),
+ UPLOAD_ERR_PARTIAL=>$l->t("The uploaded file was only partially uploaded"),
+ UPLOAD_ERR_NO_FILE=>$l->t("No file was uploaded"),
+ UPLOAD_ERR_NO_TMP_DIR=>$l->t("Missing a temporary folder"),
+ UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'),
+ );
+ OC_JSON::error(array("data" => array( "message" => $errors[$error] )));
+ exit();
+ }
+}
+$files=$_FILES['files'];
+
+$dir = $_POST['dir'];
+$dir .= '/';
+$error='';
+
+$totalSize=0;
+foreach($files['size'] as $size){
+ $totalSize+=$size;
+}
+if($totalSize>OC_Filesystem::free_space('/')){
+ OC_JSON::error(array("data" => array( "message" => "Not enough space available" )));
+ exit();
+}
+
+$result=array();
+if(strpos($dir,'..') === false){
+ $fileCount=count($files['name']);
+ for($i=0;$i<$fileCount;$i++){
+ $target = OC_Helper::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]);
+ if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i],$target)){
+ $meta=OC_FileCache::getCached($target);
+ $result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'],'name'=>basename($target));
+ }
+ }
+ OC_JSON::encodedPrint($result);
+ exit();
+}else{
+ $error='invalid dir';
+}
+
+OC_JSON::error(array('data' => array('error' => $error, "file" => $fileName)));
+
+?>