• 0

كيف أقرأ ملف مرفوع بدون حفظه إلى قاعدة البيانات في ريلز؟

أريد قراءة ملفات مرفوعة من قبل المستخدم بدون حفظها إلى قاعدة البيانات، ولقد جربت طرق عديدة من بينها هذه:

File.read(params[:uploaded_file])

لكن جميع محاولاتي باءت بالفشل، فما الطريقة الصحيحة لفعل ذلك في ريلز؟
الشيفرة البرمجية الخاصة بالعرض:

<% form_for(:uploaded_file, @feed, :url => {:action=>'parse'}, :html=> {:multipart=>true}) do |f| %>  <p>
    <%= f.label :uploaded_file, 'Upload your file.' %><br />
    <%= f.file_field :uploaded_file %>
  </p>
  <p><%= f.submit 'upload' %></p>
<% end %>

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

الحل الذي توصلتَ إليه قريب من الحل الصحيح، تأكد من نوع صنف params[:uploaded_file] والذي سيكون في العادة إما كائن StringIO أو Tempfile وكلاهما يتصرف كالملفات يمكنك قراءتهم عن طريق استخدام توابع read ألخاصة بهم.
وللتأكد من نوع الصنف (نوع صنف params[:uploaded_file] حسب ما تستخدم من Mongrel أو Passenger أو Webrick) يمكنك استخدام هذه الشيفرة البرمجية:

# Note: use form validation to ensure that
#  params[:uploaded_file] is not null

file_data = params[:uploaded_file]
if file_data.respond_to?(:read)
  xml_contents = file_data.read
elsif file_data.respond_to?(:path)
  xml_contents = File.read(file_data.path)
else
  logger.error "Bad file_data: #{file_data.class.name}: #{file_data.inspect}"
end

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن