no way to read image data from database

32 views
Skip to first unread message

daociyiyou

unread,
Nov 1, 2009, 11:05:42 AM11/1/09
to Ruby on Rails: Talk
db----
def self.up
create_table :db_files,:force => true do |t|
t.binary :data
t.timestamps
end
end
db----

controller----
def find_db_file
project=Project.find_by_id(params[:id])
project_snapshot=project.project_snapshot
send_data(project_snapshot.db_file.data,
:type => project_snapshot.content_type,
:filename => project_snapshot.filename,
:disposition => 'inline')
end
controller----


view-------
<%for p in @projects -%>
<%=image_tag(url_for
(:controller=>:projects,:action=>:find_db_file,:id=>p.id))-%>
<%end-%>
view-------



I try my best to display the image data in the database,but fail.It
seems everything is right.Even try from mysql to sqlite not works.This
really let me down.

Gregory Mazurek

unread,
Nov 1, 2009, 11:53:20 AM11/1/09
to rubyonra...@googlegroups.com
I don't know exactly what errors you are seeing but...

On Sun, Nov 1, 2009 at 11:05 AM, daociyiyou <che...@yahoo.com.cn> wrote:

db----
  def self.up
   create_table :db_files,:force => true do |t|
     t.binary :data
     t.timestamps
   end
 end
db---

I bet one of them is due to your not having content_type and filename in your table.
 
controller----
def find_db_file
   project=Project.find_by_id(params[:id])
   project_snapshot=project.project_snapshot
   send_data(project_snapshot.db_file.data,
                             :type  => project_snapshot.content_type,
                             :filename => project_snapshot.filename,
                             :disposition => 'inline')
end
controller----


view-------
 <%for p in @projects -%>
 <%=image_tag(url_for
(:controller=>:projects,:action=>:find_db_file,:id=>p.id))-%>
 <%end-%>
view-------



I try my best to display the image data in the database,but fail.It
seems everything is right.Even try from mysql to sqlite not works.This
really let me down.

daociyiyou

unread,
Nov 1, 2009, 10:30:56 PM11/1/09
to Ruby on Rails: Talk
hi
content_type and filename fields are in another table called
project_snapshots.I do it according to the attachment_fu plugin
struction.I can just not display the image in the databse.

On Nov 2, 12:53 am, Gregory Mazurek <gregory.mazu...@gmail.com> wrote:
> I don't know exactly what errors you are seeing but...
>

daociyiyou

unread,
Nov 1, 2009, 11:09:53 PM11/1/09
to Ruby on Rails: Talk
it seems -------<%=image_tag(url_for
(:controller=>:projects,:action=>:find_db_file,:id=>p.id))-%>-------
does not display the image but the image's alt words.when i right-
click the alt words to check the image,i get the the url for the
find_db_file action.Is this problem related with the database?

daociyiyou

unread,
Nov 2, 2009, 8:22:06 AM11/2/09
to Ruby on Rails: Talk
Attachment_fu works fine in :file_system mode, but
not in :db_file mode. It seems to upload only about 45 bytes of data
instead of the entire image.Either t.binary :data or
t.binary :data,:limit => 10.megabyte can not works.
anyone can help me? Nearly a week time spent on it.

daociyiyou

unread,
Nov 2, 2009, 10:35:01 AM11/2/09
to Ruby on Rails: Talk
I believe many peopel meet this problem

Marnen Laibow-Koser

unread,
Nov 2, 2009, 11:24:36 AM11/2/09
to rubyonra...@googlegroups.com
daociyiyou wrote:
> Attachment_fu works fine in :file_system mode, but
> not in :db_file mode.
[...]

Then don't use :db_file mode. :) Images don't belong in the DB.
Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org
--
Posted via http://www.ruby-forum.com/.

Ar Chron

unread,
Nov 2, 2009, 4:44:15 PM11/2/09
to rubyonra...@googlegroups.com
Marnen Laibow-Koser wrote:
> daociyiyou wrote:
>> Attachment_fu works fine in :file_system mode, but
>> not in :db_file mode.
> [...]
>
> Then don't use :db_file mode. :) Images don't belong in the DB.
> Best,
> --
> Marnen Laibow-Koser
> http://www.marnen.org
> mar...@marnen.org

I was feeling masochistic about a year and a half ago, and had it
working in :db_file mode (the challenge of one of those "proof is left
as an exercise for the reader"), but the performance was so abysmal it
was quickly evident that it was not a viable, long-term solution. It can
be done, but I'm not even sure I have that 'tester' rails app on my
machine any longer.

Just store your images on the file system, and get on with the fun
things...

daociyiyou

unread,
Nov 2, 2009, 10:03:19 PM11/2/09
to Ruby on Rails: Talk
Thanks! My server do not approve the file system store,that is why
using the db_file.

Ar Chron

unread,
Nov 2, 2009, 11:07:42 PM11/2/09
to rubyonra...@googlegroups.com
What does your generated HTML look like for the view in question?

What you have looks familiar, but image_tag may be messing you up.

Can you get it to work if you ignore the helper and write the
appropriate html to wrap the inline content yourself?

Sijo k g

unread,
Nov 3, 2009, 4:00:20 AM11/3/09
to rubyonra...@googlegroups.com
Hi

> send_data(project_snapshot.db_file.data,
> :type => project_snapshot.content_type,
> :filename => project_snapshot.filename,
> :disposition => 'inline')

Can you try here StringIO.new(project_snapshot.db_file.data)?


Sijo

Marnen Laibow-Koser

unread,
Nov 3, 2009, 9:03:34 AM11/3/09
to rubyonra...@googlegroups.com
daociyiyou wrote:
> Thanks! My server do not approve the file system store,that is why
> using the db_file.

Find a different server, then, or use S3. Even if you can get this to
work, you're asking for trouble.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Reply all
Reply to author
Forward
0 new messages