aboutsummaryrefslogtreecommitdiffstats
path: root/files/ajax/upload.php
blob: 4247aeca2834e3368f0c14c31d87bccb805d827f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php

// Init owncloud
require_once('../../lib/base.php');

// We send json data
// header( "Content-Type: application/json" );
// Firefox and Konqueror tries to download application/json for me.  --Arthur
header( "Content-Type: text/plain" );

// Check if we are a user
if( !OC_User::isLoggedIn()){
	echo json_encode( array( "status" => "error", "data" => array( "message" => "Authentication error" )));
	exit();
}

$files=$_FILES['files'];

$dir = $_POST['dir'];
if(!empty($dir)) $dir .= '/';
$error='';

$totalSize=0;
foreach($files['size'] as $size){
	$totalSize+=$size;
}
if($totalSize>OC_Filesystem::free_space('/')){
	echo json_encode( array( "status" => "error", "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='/' . stripslashes($dir) . $files['name'][$i];
		if(OC_Filesystem::fromUploadedFile($files['tmp_name'][$i],$target)){
			$result[]=array( "status" => "success", 'mime'=>OC_Filesystem::getMimeType($target),'size'=>OC_Filesystem::filesize($target),'name'=>$files['name'][$i]);
		}
	}
	echo json_encode($result);
	exit();
}else{
	$error='invalid dir';
}

echo json_encode(array( 'status' => 'error', 'data' => array('error' => $error, "file" => $fileName)));

?>
lass="nx">IUserSession $userSession, IUserManager $userManager, Manager $keyManager) { parent::__construct($appName, $request); $this->capabilitiesManager = $capabilitiesManager; $this->userSession = $userSession; $this->userManager = $userManager; $this->keyManager = $keyManager; } /** * @PublicPage * * @return DataResponse */ public function getConfig() { $data = [ 'version' => '1.7', 'website' => 'Nextcloud', 'host' => $this->request->getServerHost(), 'contact' => '', 'ssl' => 'false', ]; return new DataResponse($data); } /** * @PublicPage * * @return DataResponse */ public function getCapabilities() { $result = []; [$major, $minor, $micro] = \OCP\Util::getVersion(); $result['version'] = [ 'major' => $major, 'minor' => $minor, 'micro' => $micro, 'string' => \OC_Util::getVersionString(), 'edition' => '', 'extendedSupport' => \OCP\Util::hasExtendedSupport() ]; if ($this->userSession->isLoggedIn()) { $result['capabilities'] = $this->capabilitiesManager->getCapabilities(); } else { $result['capabilities'] = $this->capabilitiesManager->getCapabilities(true); } $response = new DataResponse($result); $response->setETag(md5(json_encode($result))); return $response; } /** * @PublicPage * @BruteForceProtection(action=login) * * @param string $login * @param string $password * @return DataResponse */ public function personCheck($login = '', $password = '') { if ($login !== '' && $password !== '') { if ($this->userManager->checkPassword($login, $password)) { return new DataResponse([ 'person' => [ 'personid' => $login ] ]); } $response = new DataResponse([], 102); $response->throttle(); return $response; } return new DataResponse([], 101); } /** * @PublicPage * * @param string $cloudId * @return DataResponse */ public function getIdentityProof($cloudId) { $userObject = $this->userManager->get($cloudId); if ($userObject !== null) { $key = $this->keyManager->getKey($userObject); $data = [ 'public' => $key->getPublic(), ]; return new DataResponse($data); } return new DataResponse(['User not found'], 404); } }