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.
Questa questione di archiviazione e la sua configurazione sono davvero una grande sfida da molti anni.
Stavo archiviando le mie immagini su Aws S3. Poi ho cambiato il mio storage back a un server locale. Ora ci sono centinaia di immagini scomparse improvvisamente.
Anche se questo non è una risposta o un commento diretto alla tua domanda, sto solo mostrando empatia verso problemi simili.
Grazie.
Ho assegnato il lavoro a un mio amico locale. Ci sta lavorando.
Anche se su tua richiesta ho selezionato questa opzione proprio ora. Usa l'URL CDN per tutti i file caricati su s3 invece che solo per le immagini.
Ma sembra esserci qualche altro problema. Ha spostato lo storage s3 sul server locale. Ora molti dei miei vecchi post, che avevano 10 foto, circa la metà vengono visualizzate e l’altra metà no. (esempio di un argomento simile)
Ci lavorerà per risolverlo, nel prossimo fine settimana.
In precedenza, prima di chiedergli, ho ingenuamente selezionato l’opzione per includere tutte le immagini nei miei backup, quindi ho ripristinato quel backup pensando che avrebbe ripristinato le immagini sul server locale, pensando che questo sarebbe stato sufficiente per spostare tutte le mie immagini da s3 a locale.
Ma non è così semplice (come sto scoprendo in molti argomenti correlati su meta).
Il tuo, ne sono abbastanza sicuro, è molto più complicato.
Questo è effettivamente complicato.
Penso che le immagini mancanti in quel post siano perché il record di caricamento non esiste, quindi dovrai fare qualcosa per recuperare quell’immagine. Potrei sbagliarmi.
Se ho ragione, ecco come ho risolto quello che penso fosse un problema simile prima. Non offro supporto gratuito oltre a questo script.
def process_uploads
begin
# Leggi l'elenco dei nomi dei file
filenames = File.readlines('/shared/uploads/allfiles.txt').map(&:strip)
count = 0
filenames.each do |filename|
# Preponi /shared al nome del file
filename.gsub!(/\.\//,"")
full_path = File.join('/shared/uploads/default/original/', filename)
begin
# Verifica se il percorso esiste ed è un file regolare (non una directory)
count += 1
if File.exist?(full_path) && File.file?(full_path)
# Apri il file
File.open(full_path, 'r') do |tempfile|
# Crea il caricamento utilizzando i parametri specificati
u = UploadCreator.new(tempfile, 'imported', {}).create_for(-1)
puts "#{count} -- #{u.id}: #{u.url}"
end
else
puts "Attenzione: Percorso non trovato o non è un file regolare: #{full_path}"
end
rescue => e
puts "Errore durante l'elaborazione del file #{full_path}: #{e.message}"
# Continua con il file successivo anche se quello corrente fallisce
next
end
end
rescue Errno::ENOENT
puts "Errore: Impossibile trovare files.txt"
rescue => e
puts "Errore durante la lettura di files.txt: #{e.message}"
end
end
# Esegui l'elaborazione
process_uploads;