在第二次尝试中,Discourse 会跳过上传,因为它们已存在于 uploads 表中。Discourse 会避免覆盖现有上传,除非明确指示。
你可以在 attachment_importer.rb (discourse/script/import_scripts/phpbb3/importers/attachment_importer.rb at main · discourse/discourse · GitHub) 中调用 @uploader.create_upload 之前添加下面的代码片段,这将确保任何具有相同文件名的现有上传 首先被删除,强制 Discourse 重新上传它。
existing_upload = Upload.find_by(original_filename: filename)
if existing_upload
existing_upload.destroy
puts "Deleted existing upload: #{filename}"
end
upload = @uploader.create_upload(user_id, path, filename)