zoukankan      html  css  js  c++  java
  • Rails上传文件

    1、view

    <%= form_tag({:method =>"post",:controller =>"welcome",:action=>"upload"},:multipart =>true)do %>
    <%= file_field ("file","filedata") %>
    <%= submit_tag '运行',:class=>"buttonsave"%>
    <%end %>

    2、controller

      def upload
        uploadFile(params["file"]["filedata"])
      end
    
      def uploadFile(file)
        if!file.original_filename.empty?
          @filename= getFileName(file.original_filename)# 生成一个随机的文件名
    
          File.open("#{Rails.root}/public/upload/#{@filename}", "wb") do |f|
            f.write(file.read)# 向dir目录写入文件
          end
          return@filename
        end
      end 
    
      def getFileName(filename)
        if!filename.nil?
          require'uuidtools'
          filename.sub(/.*./,UUID.random_create.to_s+'.')
        end
      end

    注:form一定写成 <%= form_tag({:action =>'upload'}, :multipart => true)%>

    for_tag(url_for_options={}, options={}, *parameters_for_url, &block);options 可以指定 mutipart属性。
    :action =>'upload', :multipart => true # 会被当成一个最右参数,就都传给了 url_for_opitons;这样multipart参数就被丢弃掉了。
    {:action =>'upload'}, :multipart => true # 是两个参数,这样 :mutipart=>true就传给第二个形参 options。
  • 相关阅读:
    重启机器导致mysql启动失败
    setTimeout 的方式实现 setInteval
    4.1 k8s-pod的基本操作
    Git
    leetcode -1
    面试-总结
    网络基础
    问题总结
    Notepad++安装
    Django 使用Form组件完成登录注册
  • 原文地址:https://www.cnblogs.com/zs-note/p/3346657.html
Copyright © 2011-2022 走看看