Re: Upload en ajax


#1

Aha, efectivamente es así, ahora para copiarlo en el directorio que
quiera, basta con leer el params[:file_data].read y copiarlo en otra
parte. Muchísimas gracias

----- Mensaje original ----
De: Daniel R. Troitiño removed_email_address@domain.invalid
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano
removed_email_address@domain.invalid
Enviado: lunes, 19 de marzo, 2007 19:53:49
Asunto: Re: [Ror-es] Upload en ajax

On 3/19/07, Miguel Angel Calleja Lázaro removed_email_address@domain.invalid wrote:

<%= start_form_tag( {:action => :update_form}, :multipart => true,

Cuando doy al submit, el formulario es submitado en el iframe oculto, se
pregunto si habría que hacer alguna funcionalidad para subirlo al
servidor, no? algo como leer el fichero que subo (File.open …) y
escribirlo en el servidor en la ruta correcta.

Esas son mis dudas, si alguien me puede ayudar se lo agredeceré
enormemente, estoy perdidillo, gracias

El params[:file_data] que obtienes es un objeto File de Ruby, por eso
cuando lo imprimes aparece eso.

Para comprobar si el usuario ha enviado un archivo debes comprobar si
tu params[:file_data].size > 0. Para obtener los datos del archivo
puedes hacer un params[:file_data].read, para obtener el tipo de
fichero params[:file_data].content_type y para obtener el nombre
original params[:file_data].original_filename.


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es


LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com


#2

Ya he conseguido hacer el upload, ahora me gustaría compaginarlo con un
progress bar, he estado viendo esta página:
http://sean.treadway.info/demo/upload/ , se puede descargar el ejemplo
o ver el video:
http://sean.treadway.info/files/howto-upload-progress-2.mov
Estoy intentando realizar el step4, el primer intento, parece que no me
hace el progress bar, lo hace cuando ya ha terminado de subir el
fichero, debe hacerlo mientras.
Bueno, lo que he hecho ha sido ésto:

Me he instalado el plugin upload_progress.

Mi método:

Add this line to get uplaod status for your action

upload_status_for :update_form

def update_form
@message = ‘File uploaded: ’ + params[:file_data].size.to_s
responds_to_parent do
size=params[‘file_data’].size
tipo=params[:file_data].content_type
nombre=params[:file_data].original_filename
contenido=params[:file_data].read
if size>0
dest=File.join(UPLOAD_DIR,sanitize_filename(nombre))
File.open(dest.untaint, ‘wb’) { |f| f << contenido }
#Borramos el fichero temporal si fue creado
local_temp_file=params[:file_data].local_path()
File.unlink(local_temp_file) if local_temp_file
end
render :update do |page|
page.replace_html ‘upload_box’, :partial =>
‘upload_form’, :locals=>{::nombre=>nombre}
end
end
finish_upload_status "’#{@message}’"
end

Mi plantilla:

<%= render :partial=>'upload_form'%>

Mi partial ‘upload_form’:
<%= form_tag_with_upload_progress({:action => ‘update_form’}, {
:begin => “new Effect.Appear(‘status’)”,
:finish => “$(‘message’).innerHTML = arguments[0]” })%>
<%= text_field_tag
(“imagen”,“imagen”,“value”=>nombre,“disabled”=>true)%>

<%= file_field_tag “file_data” %>
<%= submit_tag “Upload” %>

<%= upload_status_tag %>
<%= end_form_tag %>
<%= @message %>

Algo estoy haciendo mal, no me hace el progress bar cuando se está
subiendo el archivo, me podeis ayudar? Gracias