شيء لا يمكنني تفسيره يؤدي إلى نسخ مكررة من الصور

أنا أعمل مع موقع مستضاف يفتقد بعض الصور.

إحدى الصور المفقودة، المأخوذة من مراجعة سابقة لمنشور، تشير إلى https://aws1.discourse-cdn.com/business7/uploads/harness/original/2X/1/16d12d54b3b4ae7aabc8a93417570bce0984e3c9.png

يبدو أن الصورة موجودة في S3 ولكن ليس في جدول Uploads. قبل ذلك، تمكنت من إعادة إضافة الصور في منشور جديد لإنشاء سجل تحميل جديد، مما أدى إلى إصلاح جميع المنشورات التي تستخدم هذه الصورة عند إعادة خبزها.

حاولت أولاً لصق الرابط على أمل أن يقوم Discourse بتنزيل الصورة وإنشاء سجل تحميل، لكنه لم يفعل، لذا قمت بتحميلها عبر المتصفح، لكن الصورة الجديدة مختلفة وتحصل على هذا الرابط: https://aws1.discourse-cdn.com/business7/uploads/harness/original/2X/d/d59e3eccc6d9d038b6fae8910e787e851c8714de.png (هناك احتمال أنني عكست أي صورة كانت أيها).

هناك أيضًا مسألة كيفية فقدان السجلات من جدول Uploads في المقام الأول. أنا أعمل مع موقع آخر مستضاف سابقًا، والذي يفتقد أيضًا الكثير من الصور من جدول Uploads. قد يتطلب هذا موضوعًا ثانيًا، ولكنه قد يكون مرتبطًا. بالنسبة للكثير من تلك الصور، تمكنت من العثور عليها في S3، وتنزيلها، وإنشاء سجل Upload جديد مثل هذا:

  sha1= Upload.sha1_from_short_url(short_url)
  extension = short_url.split(".").last
  upload = Upload.find_by(sha1: sha1) 
  prefix = "url for the s3 bucket"
  if !upload
    # try to find it in s3
    one = sha1[0]
    two=sha1[1]
    url_link = "#{prefix}/#{one}/#{two}/#{sha1}.#{extension}"
    puts "URL: #{url_link}"
    url = URI.parse(url_link)
    full_filename = url_link.gsub(remove_url,"/shared/uploads/default/")
    filename = "/tmp/#{File.basename(url_link.gsub(remove_url,"/shared/uploads/default/"))}"
    dirname = File.dirname(filename)
    unless File.directory?(dirname)
      FileUtils.mkdir_p(dirname)
    end
    File.open(filename, "w") do |file|
      Net::HTTP.start(url.host) do |http|
        resp = http.get(url.path)
        open(file, "wb") do |file|
          file.write(resp.body)
        end
      end
    end
      # make upload for file
   ...

يبدو أن هذه الطريقة ستصلح حوالي 25٪ من المنشورات المتأثرة على الموقع الآخر.

لا أفهم تمامًا كيف يرتبط عنوان هذا الموضوع ببقية المحتوى.

الملف الأصلي الذي أشرت إليه هو ملف PNG بحجم 14 كيلوبايت. صورة بهذا الحجم الصغير لن تؤدي إلى تشغيل روتين تحسين الصور من جانب العميل.

إذًا أنا أكثر ارتباكًا بشأن كيف تقوم نفس الصورة بإنشاء اثنين من SHA1/مسارات مختلفة؟

لقد قمت بتنزيل الصورة من أحد المستودعات وقمت بتحميلها عبر المتصفح، وقامت بإنشاء نسخة ثانية من نفس الصورة باسم ملف مختلف. الملفان مختلفان؛ إذا لم يتم تغييره بواسطة المتصفح عند التحميل، فلن أعرف ما الذي يمكن أن يكون قد غيره.

أوه. ربما تم تغيير الصورة في المستودع عن الصورة الأصلية التي تم تحميلها، لذا فهي مختلفة عن الصورة الأصلية. لذا ما سيحتاج إلى الحدوث هو تنزيل الصورة الأصلية بدلاً من . . . لا. original موجود في المسار.