Problecon subida de archivo


#1

Hola amigos. miren tengo un problema…

resulta que haciendo una aplicacion en ruby tengo el siguiente problema
al querer subir un archivo. me sale

Errno::EACCES in FormulariosController#create

Permission denied - ./public/files/

en el controller tengo el siguiente codigo

def create
@formulario = Formulario.new(params[:formulario])

if @formulario.save
File.open("#{RAILS_ROOT}/public/files/#{@filename}", “wb”) do |f|
f.write(@params[:formulario][:direccion_doc].read)
end
flash[:notice] = ‘Formulario was successfully created.’
redirect_to :action => ‘list’
else
render :action => ‘new’
end
end

y el fomulario tengo esto

Formulario

<% form_tag :action => ‘create’ do %>

Cliente <% @clientes.each do |cliente| %> > <%= cliente.rut %> <% end %>
Numero <%= text_field 'formulario', 'numero_form' %>
Nombre <%= text_field 'formulario', 'nombre_form' %>
Total <%= text_field 'formulario', 'total_form' %>
Archivo <%= file_field 'formulario', 'direccion_form' %>

<%= submit_tag “Ingresar” %>
<% end %>

bueno queria saber que puedo hacer para poder subir un archivo ya que en
otra aplicacion que solo tengo el campo parapoder subir un archivolo
sube sin problemas… pero aca me tira error…

ahh y lo ultimo…

cuando hago esto por IE me aparece asi ( C:\Documents and
Settings\Administrador\Escritorio\dunbar docs\116814.pdf )

pero en firefox aparece (116814.pdf)

a que se debe eso???


#2

On 3/6/07, Francisco I. removed_email_address@domain.invalid wrote:

  flash[:notice] = 'Formulario was successfully created.'

<% form_tag :action => ‘create’ do %>

<% end %> Settings\Administrador\Escritorio\dunbar docs\116814.pdf )

pero en firefox aparece (116814.pdf)

a que se debe eso???

El primer fallo se debe posiblemente a que el usuario que ejecuta tu
código (el servidor web, muy posiblemente) no tiene permisos de
escritura en ese directorio. Deberías dar permisos de escritura de ese
directorio al usuario que vaya a ejecutar la aplicación web.

Lo segundo supongo que te refieres al campo original_filename del
objeto que representa al archivo en el servidor. Eso es así porque los
estándares parecen que no están claros en ese aspecto, y IE6 e
inferiores manda la ruta completa, mientras que (casi) todos los
demássólo mandan el nombre del fichero (creo que IE7 ahora sólo manda el
nombre del fichero). La única forma de obtener el nombre es eliminar
“a mano” la ruta de los ficheros enviados con IE. El problema que te
encuentras es que “C:\Carpeta\Archivo.txt” es un nombre de archivo
totalmente válido en Unix, aunque por suerte Unix solo lo utilizan
unos cuantos “raros” :wink: y son lo bastante inteligentes como para no
utilizar esos nombres.