up
This commit is contained in:
@@ -72,6 +72,37 @@ class MediaService {
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Nuevo: descargar y almacenar desde una URL directa
|
||||
public function fetchAndStoreFromUrl($url, $subdir = '') {
|
||||
$content = $this->downloadUrl($url);
|
||||
if ($content === false) {
|
||||
$content = $this->downloadUrl($url, ['Referer: https://graph.facebook.com']);
|
||||
}
|
||||
if ($content === false) throw new Exception('Failed to download media content from url ' . $url);
|
||||
|
||||
// intentar inferir mime
|
||||
$mime = null;
|
||||
$ext = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION) ?: 'bin';
|
||||
$dir = $this->uploadsDir . ($subdir ? '/' . trim($subdir, '/') : '');
|
||||
if (!is_dir($dir)) mkdir($dir, 0755, true);
|
||||
$filename = uniqid('m_') . '.' . $ext;
|
||||
$fullPath = $dir . '/' . $filename;
|
||||
file_put_contents($fullPath, $content);
|
||||
|
||||
$result = ['local_file' => 'uploads/media' . ($subdir ? '/' . trim($subdir, '/') : '') . '/' . $filename, 'mime_type' => $mime, 'size' => filesize($fullPath)];
|
||||
|
||||
// Si parece imagen, intentar crear thumb
|
||||
if (preg_match('#jpe?g|png|gif#i', $ext)) {
|
||||
$thumbPath = $dir . '/thumb_' . $filename . '.jpg';
|
||||
$thumbRel = dirname($result['local_file']) . '/thumb_' . $filename . '.jpg';
|
||||
if ($this->createThumbnail($fullPath, $thumbPath)) {
|
||||
$result['local_thumb'] = $thumbRel;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function downloadUrl($url, $extraHeaders = []) {
|
||||
// Incluir Authorization Bearer si está configurado (necesario para algunos endpoints)
|
||||
$authHeader = [];
|
||||
|
||||
Reference in New Issue
Block a user