Hi,
I'm currently trying to build a plugin that at some point will have to download a file from an external server and store it in a note.
Do you know if it is possible to do so while keeping cloud compatibleness ?
Hi,
I'm currently trying to build a plugin that at some point will have to download a file from an external server and store it in a note.
Do you know if it is possible to do so while keeping cloud compatibleness ?
Hi
Find below a working code:
$url is the url where the file is located (to be downloaded)
$filePath is the location of file the be saved inside CRM filesystem (upload/{note_id})
Unfortunately this code doesn't work on SugarOndemand.
public function download(string $url, string $filePath) {
$fh_res = fopen($filePath, 'w+');if($fh_res === false) return ['status' => 'error', 'error' => 'Could not open : ' . $filePath];
self::$curl = curl_init();
curl_setopt(self::$curl, CURLOPT_URL, $url);
curl_setopt(self::$curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt(self::$curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt(self::$curl, CURLOPT_ENCODING, '');
curl_setopt(self::$curl, CURLOPT_MAXREDIRS, 10);
curl_setopt(self::$curl, CURLOPT_TIMEOUT, 30);
curl_setopt(self::$curl, CURLOPT_FILE, $fh_res);$data = curl_exec(self::$curl);
$httpCode = curl_getinfo(self::$curl, CURLINFO_HTTP_CODE);
$errorCode = curl_errno(self::$curl);if($httpCode == 200 && $errorCode == CURLE_OK) {
$response = ['status' => 'success', 'code' => 200, 'data' => json_decode($data, true)];
} else if($httpCode != 200) {
$response = ['status' => 'error', 'code' => $httpCode, 'error' => json_decode($data, true)['error']];
} else {
$response = ['status' => 'error', 'code' => $errorCode, 'error' => curl_error(self::$curl)];
}curl_close(self::$curl);
fclose($fh_res);return $response;
}
Regards
Hi
Find below a working code:
$url is the url where the file is located (to be downloaded)
$filePath is the location of file the be saved inside CRM filesystem (upload/{note_id})
Unfortunately this code doesn't work on SugarOndemand.
public function download(string $url, string $filePath) {
$fh_res = fopen($filePath, 'w+');if($fh_res === false) return ['status' => 'error', 'error' => 'Could not open : ' . $filePath];
self::$curl = curl_init();
curl_setopt(self::$curl, CURLOPT_URL, $url);
curl_setopt(self::$curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt(self::$curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt(self::$curl, CURLOPT_ENCODING, '');
curl_setopt(self::$curl, CURLOPT_MAXREDIRS, 10);
curl_setopt(self::$curl, CURLOPT_TIMEOUT, 30);
curl_setopt(self::$curl, CURLOPT_FILE, $fh_res);$data = curl_exec(self::$curl);
$httpCode = curl_getinfo(self::$curl, CURLINFO_HTTP_CODE);
$errorCode = curl_errno(self::$curl);if($httpCode == 200 && $errorCode == CURLE_OK) {
$response = ['status' => 'success', 'code' => 200, 'data' => json_decode($data, true)];
} else if($httpCode != 200) {
$response = ['status' => 'error', 'code' => $httpCode, 'error' => json_decode($data, true)['error']];
} else {
$response = ['status' => 'error', 'code' => $errorCode, 'error' => curl_error(self::$curl)];
}curl_close(self::$curl);
fclose($fh_res);return $response;
}
Regards
Thanks,
Actually, since it seems not feasible for cloud, we will try to make the external server call Sugar Apis to push these files.