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.
Essa questão de armazenamento e sua configuração realmente é um grande desafio há muitos anos.
Eu estava armazenando minhas imagens no Aws S3. E então mudei meu armazenamento de volta para o servidor local. Agora, centenas de imagens desapareceram de repente.
Embora isso não seja uma resposta ou comentário direto à sua dúvida, estou apenas mostrando empatia em relação a problemas semelhantes.
Obrigado.
Eu designei o trabalho para um amigo meu local. Ele está analisando isso.
Embora a seu pedido, eu selecionei esta opção agora. Usar URL CDN para todos os arquivos enviados para s3 em vez de apenas para imagens.
Mas parece haver algum outro problema. Ele mudou o armazenamento s3 para o servidor local. Agora, muitas das minhas postagens antigas, que tinham 10 fotos, cerca de metade estão sendo exibidas e a outra metade não. (exemplo de um tópico assim)
Ele trabalhará na resolução disso no próximo fim de semana.
Anteriormente, antes de perguntar a ele, ingenuamente selecionei a opção para ter todas as imagens incluídas em meus backups, depois restaurei esse backup pensando que restauraria as imagens para o servidor local, pensando que isso seria suficiente para mover todas as minhas imagens de s3 para o local.
Mas isso não é tão simples (como estou descobrindo em muitos tópicos relacionados no meta).
Penso que as imagens em falta nessa publicação se devem à inexistência do registo de Upload, pelo que terá de fazer algo para recuperar essa imagem. Posso estar enganado.
Se eu estiver certo, eis como resolvi o que penso ter sido um problema semelhante antes. Não ofereço suporte gratuito para além deste script.
def process_uploads
begin
# Read the list of filenames
filenames = File.readlines('/shared/uploads/allfiles.txt').map(&:strip)
count = 0
filenames.each do |filename|
# Prepend /shared to the filename
filename.gsub!(/\.\//,"")
full_path = File.join('/shared/uploads/default/original/', filename)
begin
# Check if path exists and is a regular file (not a directory)
count += 1
if File.exist?(full_path) && File.file?(full_path)
# Open the file
File.open(full_path, 'r') do |tempfile|
# Create upload using the specified parameters
u = UploadCreator.new(tempfile, 'imported', {}).create_for(-1)
puts "#{count} -- #{u.id}: #{u.url}"
end
else
puts "Warning: Path not found or is not a regular file: #{full_path}"
end
rescue => e
puts "Error processing file #{full_path}: #{e.message}"
# Continue with next file even if current one fails
next
end
end
rescue Errno::ENOENT
puts "Error: Could not find files.txt"
rescue => e
puts "Error reading files.txt: #{e.message}"
end
end
# Execute the processing
process_uploads;