كيفية استعادة صور S3 المفقودة من المنشور

واحد من منشوراتي فقد صوره عشوائيًا. قمت بتشغيل PostCustomField.where(name: Post::MISSING_UPLOADS) في وحدة تحكم Rails وحصلت على ما يلي:

[#<PostCustomField:0x00005636227c20a0
  id: 7335,
  post_id: 36,
  name: "missing uploads",
  value:
   "[\"upload://ljcw6gjRoPMD0IB5Vcc6K23VXIA.png\",
     \"upload://v6caNgjm6wDrHzN8MQdXYnlNJEs.png\",
     \"upload://bn2lC9z0Xp4Fit00p6KepGMZZ2h.png\",
     \"upload://omhuL50n5VfAxY8Reyf2rQFoEWb.jpeg\",
     \"upload://yJCRzx9SogObwuj1En0QciZdntF.jpeg\",
     \"upload://wOeXgaPEBBia8oS0xxbOr5NKNWo.gif\",
     \"upload://fuXMNACp8WoEHEr3ayciiVJjmNl.png\",
     \"upload://MTIX7g8Wu11qaJasGg5yGsFvJA.jpeg\",
     \"upload://oKle1GsOlPD85zeHiKRdUGJCCEM.jpeg\",
     \"upload://zY43AR6Xpga92HNzdEnxQRIVpYE.gif\",
     \"upload://ufigIPfGEPbDInHP4co0I0YDT51.png\",
     \"upload://h7A1BJjNwZZwuUTYWXCeASk7UAh.png\",
     \"upload://gmFGijsek8NmtfqBwAguIgkzDFP.png\",
     \"upload://qPFQBe9zvnTmOnqMhpofQF3oqCh.png\"]",
  created_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00,
  updated_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00>

بما أن الأمر يتعلق بـ 14 صورة فقط في منشور واحد، فأنا مستعد لإصلاحها يدويًا، لكنني لا أعرف كيفية العثور على الصور الأصلية في حوض S3 الخاص بي. لقد حاولت البحث عن أسماء الملفات هنا، لكنني لم أحصل على أي نتائج:

لا أستخدم S3 بحد ذاتها، لكن ألا يؤدي عدم وجود صورك إلى اختفائها؟

بجدية: هل توجد سجلات يمكنك التحقق منها للحصول على أسماء تلك الملفات؟ ربما قام شيء غريب بحذفها برمجياً؟

المشكلة هي أن وحدة التحكم الويب الخاصة بـ S3 تبدو وكأنها تبحث فقط في المجلد الحالي. إذا نزلت إلى مجلد محدد وبحثت عن ملف بداخله، فإنها تجده. أما إذا صعدت إلى المجلد الأب، فإنها لا تجده.

أنت بحاجة إلى تحويل عناوين URL التي تبدأ بـ upload:// إلى أسماء ملفات فعلية أولاً.

شكرًا لك، مايكل. هذا سيكون مفيدًا، لكنني لا أستطيع معرفة كيفية الحصول على المسار الكامل. في وحدة تحكم Rails، يمكنني القيام بذلك، لكنه لا يعطيني اسم الملف الفعلي:

Base62.decode("ljcw6gjRoPMD0IB5Vcc6K23VXIA").to_s(16)
=> "955952cf3952d2fad7c24528c08cfb79301a6260"

يعتمد ذلك على العديد من العوامل، ولكن بما أن الملف مفقود حسب التقارير، فقد يكون في المكان الخاطئ بالفعل. الآن بعد أن عرفت اسم الملف، ليس من الصعب تصفح S3 والتحقق مما إذا كنت ستجد ملفًا مطابقًا.

يمكنك أيضًا محاولة البحث عن Upload في قاعدة البيانات حيث يتطابق sha1 مع هذه السلسلة، ويكون سجل الرفع يحتوي على مسار. ولكن مرة أخرى: لو كانت الأمور على ما يرام لما كنا نناقش هذه المشكلة.