Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/files/conduit/FileUploadConduitAPIMethod.php
12241 views
1
<?php
2
3
final class FileUploadConduitAPIMethod extends FileConduitAPIMethod {
4
5
public function getAPIMethodName() {
6
return 'file.upload';
7
}
8
9
public function getMethodDescription() {
10
return pht('Upload a file to the server.');
11
}
12
13
protected function defineParamTypes() {
14
return array(
15
'data_base64' => 'required nonempty base64-bytes',
16
'name' => 'optional string',
17
'viewPolicy' => 'optional valid policy string or <phid>',
18
'canCDN' => 'optional bool',
19
);
20
}
21
22
protected function defineReturnType() {
23
return 'nonempty guid';
24
}
25
26
protected function execute(ConduitAPIRequest $request) {
27
$viewer = $request->getUser();
28
29
$name = $request->getValue('name');
30
$can_cdn = (bool)$request->getValue('canCDN');
31
$view_policy = $request->getValue('viewPolicy');
32
33
$data = $request->getValue('data_base64');
34
if ($data === null) {
35
throw new Exception(pht('Field "data_base64" must be non-empty.'));
36
}
37
$data = $this->decodeBase64($data);
38
39
$params = array(
40
'authorPHID' => $viewer->getPHID(),
41
'canCDN' => $can_cdn,
42
'isExplicitUpload' => true,
43
);
44
45
if ($name !== null) {
46
$params['name'] = $name;
47
}
48
49
if ($view_policy !== null) {
50
$params['viewPolicy'] = $view_policy;
51
}
52
53
$file = PhabricatorFile::newFromFileData($data, $params);
54
55
return $file->getPHID();
56
}
57
58
}
59
60