This commit is contained in:
lizandrogd
2026-01-21 12:33:11 -05:00
parent b6ef6179b8
commit 3f6e723fac
6 changed files with 84 additions and 74 deletions
+31
View File
@@ -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 = [];