Completed
Push — master ( 91fdab...75a7b9 )
by
unknown
13:37
created

ui/vendor_bower/plupload/examples/upload.php (2 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
/*
0 ignored issues
show
Unused Code Comprehensibility introduced by
41% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
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);
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';
0 ignored issues
show
Unused Code Comprehensibility introduced by
50% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
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);
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);
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);
116
@fclose($in);
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