Files
xstore/inc/Hura8/System/CopyFileFromUrl.php
2025-10-04 11:46:59 +07:00

57 lines
1.6 KiB
PHP

<?php
namespace Hura8\System;
use Hura8\Interfaces\AppResponse;
use Hura8\Interfaces\FileHandleResponse;
use Hura8\System\Controller\bFileHandle;
class CopyFileFromUrl extends bFileHandle
{
/**
* @param string $file_url
* @param int $max_file_size max file size in bytes accepts, default = 1MB
* @param string $fixed_file_name set uploaded name to this fixed name (ie. [item_id].jpg) so old file will be replaced
* @return FileHandleResponse
*/
public function start(string $file_url, string $fixed_file_name='', int $max_file_size = 1000000) : FileHandleResponse
{
if(!Url::isUrlValid($file_url)) {
return new FileHandleResponse(AppResponse::ERROR, $file_url." is not a valid url");
}
if(!$this->setup_success) {
return new FileHandleResponse(AppResponse::ERROR, "Fail to setup");
}
$original_file_name = substr($file_url, strrpos($file_url, "/"));
$original_file_path = $this->tmp_folder . "/". $original_file_name;
$url_content = Url::getUrlContent($file_url);
if(!$url_content || !@file_put_contents($original_file_path, $url_content)) {
return new FileHandleResponse(AppResponse::ERROR, "Fail to copy");
}
/*if(!@copy($file_url, $original_file_path)) {
return new FileHandleResponse(AppResponse::ERROR, "Fail to copy");
}*/
$result = $this->processFile(
$original_file_name,
$original_file_path,
$fixed_file_name,
$max_file_size
);
unset($url_content);
return $result;
}
}