On Jun 21, 2012, at 3:34 AM, Avantec Van wrote:

> Hi,
>  I'm creating an file uploading application. I'm using paperclip to
> upload files.

I just did this, a couple weeks ago.

> 
> my upload path is
> "http://localhost:3000/system/uploads/uploaded_files/000/000/064/original/Cell%20phone%20ringing.mp4";
> when I'm clicking on this I can see the file.
> 
> But I want to encode this URL something like
> http://localhost:3000/UitMvriwuSc3VLy3IyU9MKYbSqSnxaZk5qcX6BgYGEGx
> 
> and when I click on this link, it should decode the URL & I should be
> able to see the actual file in browser.

Make a new column in your uploaded_files model called 'slug' or whatever you 
like (and index it, too!). Either alter your show method or make a new get_file 
method in your controller, which should look like this:

        @uploaded_file = UploadedFile.find_by_slug(params[:slug])

In your routes.rb, add a line like this (fairly low in the list, so it doesn't 
clobber the other routes)

  match '/:slug', :to => 'uploaded_files#show'

That should do the trick.

Here's a way to make a very terse code for your URL:

  def set_slug
    code = Array.new(7) { (('A'..'Z').to_a + (0..9).to_a)[rand(36)] }.join.to_s
    if UploadedFile.find_by_slug(code)
      return self.set_slug()
    else
      self.slug = code
    end
  end

Call it in an after_create.

Walter

> 
> 
> Anybody can help me.
> 
> Thanks in advance.
> Avantec
> 
> -- 
> Posted via http://www.ruby-forum.com/.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to 
> rubyonrails-talk+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to