Hi guys,
I am working on some upload file code , here it is :
================== code begin =================
require ‘fileutils’
require ‘uuid’
class Content < ActiveRecord::Base
include FileUtils
include UUID
before_create :write_file_to_disk
before_update :write_file_to_disk
......... ................
def update_attributes_from_params params, *args
args.each do |attribute|
s= params[attribute].blank? ? "self.#{attribute.to_s}=%Q{}"
:
%Q{self.#{attribute.to_s}="#{params[attribute]}"}
eval(s)
end
update
end
… …
private
def write_file_to_disk
file_path = "#{upload_file_path}/#{user_id}/#{file_name}"
p " the file size : #{file.size}"
File.open(file_path, "wb") do |media_file|
media_file.write file.read
end
self.size = @file.size
end
def file= file
return if file.blank?
@file = file
ext_name = File.extname file.original_filename
# original_file_name and file_name are both content attributes
original_file_name = file.original_filename
file_name = UUID.new + ext_name
end
end
when I update an file, I do it like this :
@content = Content.find params[:content_id]
@content.update_attributes_from_params params, :title,
:orginazation, :file
and it produces :
“the file size : 8477823”
but when I check the file uploaded ,
irb >>
File.size"/home/tim/upload_test/1/adb12d60-9bd5-012a-a458-000c29f18cec.mp3"
=> 2176
it’s only 2.1K, so any body can tell me why and how to handel it
correctly.
I tried @content.send(“file=”,params[:file]),but the real size is
still 2176.
Thanks, regards!
Tim