class URLDownloader in N1ED - Visual editor as CKEditor plugin with Bootstrap support 7
Hierarchy
- class \EdSDK\FileUploaderServer\lib\file\URLDownloader
Expanded class hierarchy of URLDownloader
File
- vendor/
edsdk/ file-uploader-server-php/ src/ lib/ file/ URLDownloader.php, line 21
Namespace
EdSDK\FileUploaderServer\lib\fileView source
class URLDownloader {
public static function download($url, $dir) {
$result = URLDownloader::downloadURL($url, $dir);
return $result;
}
private static function downloadURL($url, $dir) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// for not redirecting response to stdout
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
// allow redirects
$headers = array();
curl_setopt($curl, CURLOPT_HEADERFUNCTION, function ($curl_, $header) use (&$headers) {
$len = strlen($header);
$header = explode(':', $header, 2);
if (count($header) < 2) {
// ignore invalid headers
return $len;
}
$name = strtolower(trim($header[0]));
if (!array_key_exists($name, $headers)) {
$headers[$name] = [
trim($header[1]),
];
}
else {
$headers[$name][] = trim($header[1]);
}
return $len;
});
$result = new DownloadedURL();
$fileName = "";
$response = curl_exec($curl);
if ($response !== false) {
$responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($responseCode == '200') {
if (array_key_exists("Content-Type", $headers)) {
$result->contentType = $headers["Content-Type"];
}
if (array_key_exists("Content-Length", $headers)) {
$result->contentLength = $headers["Content-Length"];
}
if (array_key_exists("Content-Disposition", $headers)) {
$contentDisposition = $headers["Content-Disposition"];
$index = strpos($contentDisposition, "filename=");
if ($index !== false) {
$fileName = substr($contentDisposition, $index + 10);
}
}
if (strlen(trim($fileName)) == 0) {
$index = strrpos($url, "/");
$fileName = substr($url, $index + 1);
$index = strpos($fileName, "?");
if ($index !== false) {
$fileName = substr($fileName, 0, $index);
}
}
if (strlen(trim($fileName)) === 0) {
$fileName = "url";
}
$fileName = Utils::fixFileName($fileName);
$fileName = Utils::getFreeFileName($dir, $fileName, false);
}
else {
throw new MessageException(Message::createMessage(Message::DOWNLOAD_FAIL_CODE, $responseCode));
}
}
else {
throw new MessageException(Message::createMessage(Message::DOWNLOAD_FAIL_IO, curl_error($curl)));
}
$saveFilePath = $dir . "/" . $fileName;
file_put_contents($saveFilePath, $response);
curl_close($curl);
$result->fileName = $fileName;
return $result;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
URLDownloader:: |
public static | function | ||
URLDownloader:: |
private static | function |