يظهر في المنشور:

كيف يمكنني ربطه بهذا (والعكس صحيح):
"//127.0.0.1:4200/uploads/default/original/1X/abcafdf0e1d9262d515075420e4d940718796a5d.jpeg"
يظهر كخاصية url لـ Upload.
؟
david
(David Taylor)
25 أبريل 2025، 8:09ص
2
ستستخدم هذه الوظيفة:
ثم ابحث عن SHA1 في قاعدة البيانات للعثور على سجل التحميل.
إعجابَين (2)
آه، إذن هذا هو SHA1؟ يا للسخافة!
إعجاب واحد (1)
david
(David Taylor)
25 أبريل 2025، 8:12ص
4
نعم، يتضمن كل من الرابط المختصر والرابط العادي SHA1.
الفرق هو أن الرابط الطويل يستخدم الإصدار الأصلي المشفر بالنظام الست عشري، والذي يتطابق مع ما هو موجود في قاعدة البيانات. “الرابط المختصر” upload:// هو تمثيل base62 لنفس التجزئة، بحيث يستخدم عددًا أقل من الأحرف.
إعجاب واحد (1)
عذرًا، فهمت الأمر الآن.
إذًا هناك:
short-url في المنشور
url - الرابط الأصلي الطويل للتحميل.
SHA1 تم إنشاؤه أثناء التحميل.
وقد أعطيتني للتو طريقة العثور على url من short-url
إعجاب واحد (1)
عذرًا، في وقت مبكر من اليوم، لذا إذا كان هدفي هو إنشاء short-url، فأنا بحاجة إلى تحويل SHA1 إلى base62؟
david
(David Taylor)
25 أبريل 2025، 8:25ص
7
هل تقوم بذلك في تطبيق Rails؟
إذا كان الأمر كذلك، فيمكنك إنشاء عناوين URL باستخدام upload.short_url و upload.url.
للعثور على سجل تحميل في المقام الأول، يمكنك القيام بما يلي:
sha1 = Upload.sha1_from_long_url(...)
# أو
sha1 = Upload.sha1_from_short_url(...)
# ثم
upload = Upload.find_by(sha1: sha1)
إعجاب واحد (1)
نعم، Rails. أقوم بالتحميل من الواجهة الخلفية.
يا إلهي:
Upload.last.short_url
"upload://fkO7C9M7SLRhXjEiFTOSUJIdCgJ.jpeg"
آسف يا ديفيد، لقد فاتني ذلك تمامًا!!
على الأقل هذا الموضوع يوضح كل شيء لأي شخص مهتم.
شكراً على كل المعلومات.
Upload
.where(dominant_color: nil)
.order("id desc")
.first(count)
.each { |upload| upload.calculate_dominant_color! }
end
private
def short_url_basename
"#{Upload.base62_sha1(sha1)}#{extension.present? ? ".#{extension}" : ""}"
end
end
# == Schema Information
#
# Table name: uploads
#
# id :integer not null, primary key
# user_id :integer not null
# original_filename :string not null
إعجابَين (2)
system
(system)
تم إغلاقه في
25 مايو 2025، 8:27ص
9
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.