If I create a thread and upload an image the img src is set to my S3_CDN_URL. If I upload a zip file the URL is at /uploads and redirect directly to my bucket instead of using the S3_CDN_URL. I do not have DISCOURSE_CDN_URL set - the guide indicate it doesn’t affect this issue.
Ce problème de stockage et sa configuration constituent en effet un grand défi depuis de nombreuses années.
Je stockais mes images sur Aws S3. Puis j’ai changé mon stockage pour un serveur local. Maintenant, des centaines d’images ont soudainement disparu.
Bien que ce ne soit pas une réponse ou un commentaire direct à votre question, je voulais simplement exprimer de l’empathie face à des problèmes similaires.
Merci.
J’ai confié le travail à un ami local. Il s’en occupe.
Bien que sur votre demande, je viens de sélectionner cette option. Utiliser l'URL CDN pour tous les fichiers téléchargés sur s3 au lieu de seulement pour les images.
Mais il semble y avoir un autre problème. Il a déplacé le stockage s3 vers le serveur local. Maintenant, beaucoup de mes anciens articles, qui avaient 10 photos, environ la moitié s’affichent et l’autre moitié non. (exemple d’un tel sujet)
Il travaillera à résoudre cela, le week-end prochain.
Auparavant, avant de lui demander, j’avais naïvement sélectionné l’option pour inclure toutes les images dans mes sauvegardes, puis restauré cette sauvegarde en pensant que cela restaurerait les images sur le serveur local, pensant que cela suffirait pour déplacer toutes mes images de s3 vers le local.
Mais ce n’est pas si simple (comme je le découvre sur de nombreux sujets connexes sur meta).
Le vôtre, j’en suis à peu près sûr, est beaucoup plus compliqué.
C’est effectivement compliqué.
Je pense que les images manquantes sur ce post sont dues à l’absence de l’enregistrement Upload, vous devrez donc faire quelque chose pour récupérer cette image. Je peux me tromper.
Si j’ai raison, voici comment j’ai résolu ce qui me semble être un problème similaire auparavant. Je n’offre aucun support gratuit au-delà de ce script.
def process_uploads
begin
# Lire la liste des noms de fichiers
filenames = File.readlines('/shared/uploads/allfiles.txt').map(&:strip)
count = 0
filenames.each do |filename|
# Ajouter /shared au début du nom de fichier
filename.gsub!(/\.\//,"")
full_path = File.join('/shared/uploads/default/original/', filename)
begin
# Vérifier si le chemin existe et est un fichier régulier (pas un répertoire)
count += 1
if File.exist?(full_path) && File.file?(full_path)
# Ouvrir le fichier
File.open(full_path, 'r') do |tempfile|
# Créer l'upload en utilisant les paramètres spécifiés
u = UploadCreator.new(tempfile, 'imported', {}).create_for(-1)
puts "#{count} -- #{u.id}: #{u.url}"
end
else
puts "Attention : Chemin introuvable ou n'est pas un fichier régulier : #{full_path}"
end
rescue => e
puts "Erreur lors du traitement du fichier #{full_path} : #{e.message}"
# Continuer avec le fichier suivant même si le fichier actuel échoue
next
end
end
rescue Errno::ENOENT
puts "Erreur : Impossible de trouver files.txt"
rescue => e
puts "Erreur lors de la lecture de files.txt : #{e.message}"
end
end
# Exécuter le traitement
process_uploads;