Completed
Push — master ( 1de9b7...830752 )
by Kristof
38:46 queued 24:09
created

ui/vendor_bower/plupload/examples/upload.php (5 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * upload.php
4
 *
5
 * Copyright 2013, Moxiecode Systems AB
6
 * Released under GPL License.
7
 *
8
 * License: http://www.plupload.com/license
9
 * Contributing: http://www.plupload.com/contributing
10
 */
11
12
#!! IMPORTANT:
13
#!! this file is just an example, it doesn't incorporate any security checks and
14
#!! is not recommended to be used in production environment as it is. Be sure to
15
#!! revise it and customize to your needs.
16
17
18
// Make sure file is not cached (as it happens for example on iOS devices)
19
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
20
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
21
header("Cache-Control: no-store, no-cache, must-revalidate");
22
header("Cache-Control: post-check=0, pre-check=0", false);
23
header("Pragma: no-cache");
24
25
/*
26
// Support CORS
27
header("Access-Control-Allow-Origin: *");
28
// other CORS headers if any...
29
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
30
	exit; // finish preflight CORS requests here
31
}
32
*/
33
34
// 5 minutes execution time
35
@set_time_limit(5 * 60);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
36
37
// Uncomment this one to fake upload time
38
// usleep(5000);
39
40
// Settings
41
$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload";
42
//$targetDir = 'uploads';
43
$cleanupTargetDir = true; // Remove old files
44
$maxFileAge = 5 * 3600; // Temp file age in seconds
45
46
47
// Create target dir
48
if (!file_exists($targetDir)) {
49
	@mkdir($targetDir);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
50
}
51
52
// Get a file name
53
if (isset($_REQUEST["name"])) {
54
	$fileName = $_REQUEST["name"];
55
} elseif (!empty($_FILES)) {
56
	$fileName = $_FILES["file"]["name"];
57
} else {
58
	$fileName = uniqid("file_");
59
}
60
61
$filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
62
63
// Chunking might be enabled
64
$chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
65
$chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
66
67
68
// Remove old temp files
69
if ($cleanupTargetDir) {
70
	if (!is_dir($targetDir) || !$dir = opendir($targetDir)) {
71
		die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
72
	}
73
74
	while (($file = readdir($dir)) !== false) {
75
		$tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;
76
77
		// If temp file is current file proceed to the next
78
		if ($tmpfilePath == "{$filePath}.part") {
79
			continue;
80
		}
81
82
		// Remove temp file if it is older than the max age and is not the current file
83
		if (preg_match('/\.part$/', $file) && (filemtime($tmpfilePath) < time() - $maxFileAge)) {
84
			@unlink($tmpfilePath);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
85
		}
86
	}
87
	closedir($dir);
88
}
89
90
91
// Open temp file
92
if (!$out = @fopen("{$filePath}.part", $chunks ? "ab" : "wb")) {
93
	die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
94
}
95
96
if (!empty($_FILES)) {
97
	if ($_FILES["file"]["error"] || !is_uploaded_file($_FILES["file"]["tmp_name"])) {
98
		die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
99
	}
100
101
	// Read binary input stream and append it to temp file
102
	if (!$in = @fopen($_FILES["file"]["tmp_name"], "rb")) {
103
		die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
104
	}
105
} else {
106
	if (!$in = @fopen("php://input", "rb")) {
107
		die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
108
	}
109
}
110
111
while ($buff = fread($in, 4096)) {
112
	fwrite($out, $buff);
113
}
114
115
@fclose($out);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
116
@fclose($in);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
117
118
// Check if file has been uploaded
119
if (!$chunks || $chunk == $chunks - 1) {
120
	// Strip the temp .part suffix off
121
	rename("{$filePath}.part", $filePath);
122
}
123
124
// Return Success JSON-RPC response
125
die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}');
126