كيف القضبان تكوين الوصول إلى وسائل الإعلام من الموارد التقليدية في دليل الموقع ؟

StackOverflow https://stackoverflow.com/questions/1029442

سؤال

دعونا نقول لدي صورة لا تتواجد في الطبيعي الموقع:

{appname}/public/images/unconventional.gif

ولكن بدلا من ذلك هنا:

{appname}/unconventional.gif

أنا أفهم أن هذا هو انتهاك كامل القضبان الاتفاقيات غير أخلاقي و لا يجب أن تفعل هذا تحت أي ظرف من الظروف ، وعلاوة على ذلك, لماذا أنا حتى توحي مثل هذه الحماقة الشيء ؟

حسنا, الآن علينا أن الخروج من الطريق ، على افتراض أنا على ويندوز وبالتالي وصلات رمزية من السؤال: كيف يمكن وضع هذا الأمر ؟

هل كانت مفيدة؟

المحلول

القضبان لا يخدم هذه الصور ، فإنه يتيح ملقم ويب تفعل ذلك.من الأفضل تغيير تكوين ملقم ويب الخاص بك للتعامل مع هذا السيناريو.إذا كنت تستخدم Apache, على سبيل المثال ، فإنه من السهل اقامة مع mod_rewrite.

صنع القضبان تخدم هذه الصور سوف تكون قبيحة ، لكنه هو ممكن إذا توفر طريقا في routes.rb أن المباريات /public/images/unconventional.gif, و إذا كان الملف نفسه غير موجود.على سبيل المثال:

map.connect "public/images/unconventional.gif",
  :controller => "static_image_controller",
  :action => "serve"

ثم إنشاء وحدة تحكم StaticImageController:

class StaticImageController < ApplicationController
  def serve
    image = File.read(File.join(Rails.root, "unconventional.gif"))
    send_data image, :type => "image/gif", :disposition => "inline"
  end
end

تحذير: إذا كنت تستخدم مفهوم أعلاه ، لاحظ أنه إذا كنت تستخدم مدخلات من العنوان إلى أن تقرر أي ملف لخدمة (مع params[:file], على سبيل المثال) ، تحتاج إلى تماما تطهير المدخلات ، لأنك المخاطرة وتعريض نظام الملفات الخاص بك كامل إلى العالم الخارجي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top