控制器文件

app/controllers/api/v1/order_controller.rb

  def create
# 从本地读取
log_dir = File.expand_path(File.join(Rails.root.to_s,'/log/ip04.log'))
puts "log_dir: #{log_dir}"
file = File.open(log_dir)
puts "file: #{file} file.size:#{file.size} #{(file.size.to_f/1024/1024).round(2)}mb"
puts "File::size?: #{File::size?( log_dir)}"
puts "File::exist?( path): #{File::exist?( log_dir)}"
puts "file.atime: #{file.atime}"
puts "file.log_dir: #{File.extname(log_dir)}" # form表单上传
file = params[:file] #上传的key名为file
puts "@file #{file}"
# {"file"=>#<ActionDispatch::Http::UploadedFile:0x00007f3bf09cc510 @tempfile=#<Tempfile:/tmp/RackMultipart20210807-28560-1ld7wxc.txt>, @original_filename="ip1000_v1_res_uniq.txt", @content_type="text/plain", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"ip1000_v1_res_uniq.txt\"\r\nContent-Type: text/plain\r\n">}
puts "@original_filename #{file.original_filename}"
puts "@basename #{File::basename(file.original_filename)}"
puts "@size11 #{ (File::size(file.tempfile).to_f/1024/1024)}mb" #@size11 0.00013637542724609375mb
puts "@zise22 #{file.size}" #@zise22 143
puts "11111"
if file.size.blank? || !File.extname(file.original_filename).downcase.in?([".txt"])
render(json:{msg:"file is empty! or is not txt"})
return
end
filename = uploadfile(file)
puts "filename:#{filename}"
render(json:{msg:"ok"})
end # 上传文件
def uploadfile(file)
if !file.original_filename.empty?
dir_path = get_upload_dir_path
#设置目录路径,如果目录不存在,生成新目录
FileUtils.mkdir_p(dir_path, :mode => 2750) unless File.exist?(dir_path)
#写入文件
##wb 表示通过二进制方式写,可以保证文件不损坏
filename = "#{Time.now.strftime('%Y%m%d%H%M%S')}_#{file.original_filename}"
filename_path = dir_path + filename
File.open(filename_path, "wb") do |f|
f.write(file.read)
end
return filename
end
end # 上传文件的目录
def get_upload_dir_path(upload_file_path = "/public/upload/category_statistics/")
@upload_file_path = "#{Rails.root}#{upload_file_path}"
end

postman 上传

效果

控制器里获取传参

  # {
# "type": "ip"
# }
def create2
# 接收单个参数
# q = params[:q]
# 读取所有body 去掉回车换行,方便base64
str = request.body.read
puts "str: #{str}"
if str.blank?
Rails.logger.error("body内容不能为空")
return { status: false, error_code: 1, error_msg: "body内容不能为空" }
end
# {"type": "ip"}
body_json = JSON.parse(str)
p_type = body_json["type"]
puts "body_json: #{body_json} #{body_json["type"]}" case p_type
when "ip"
puts "ip"
# save_ip
save_parent_cate
else
puts "不支持"
res = { code: 400, msg: "不支持 type:#{p_type}" }
render(json: res)
end end

rails 上传文件的更多相关文章

  1. Rails上传文件

    1.view <%= form_tag({:method =>"post",:controller =>"welcome",:action=& ...

  2. Ajax.BeginForm 上传文件

    在 Mvc 中上传文件时通常使用 Html.BeginForm 标签,同时对Form 添加属性 enctype = "multipart/form-data",前端代码如下: @H ...

  3. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  4. 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader

    发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...

  5. asp.net mvc 上传文件

    转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...

  6. app端上传文件至服务器后台,web端上传文件存储到服务器

    1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...

  7. .net FTP上传文件

    FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...

  8. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  9. 前端之web上传文件的方式

    前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...

  10. Django session cookie 上传文件、详解

    session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ...

随机推荐

  1. KingbaseES 逻辑读与物理读

    oracle数据库中逻辑读,物理读 数据访问方式:数据库少不了和操作系统进行数据交互,表数据最好的方式是从数据库共享池中访问到,避免发生磁盘IO,当然如果共享池中没有访问到数据就难免发生磁盘IO. 物 ...

  2. KingbaseES 查询优化消除SubPlan

    说明: 日常业务系统在使用SQL语句进行查询时,开发人员容易将sql查询的子查询放到select语句中进行使用,会造成sql性能的下降. 数据准备: test=# test=# select coun ...

  3. UE4蓝图对Actor的引用

    通过关卡蓝图调用 在关卡中放置一个Actor,在关卡蓝图中右键 create a reference to actor,即可 注意使用该方法创建时,需要现在关卡中选择上该类Actor 当Actor生成 ...

  4. NET Core使用Grpc通信(一):一元

    gRPC是一个现代的开源高性能远程过程调用(RPC)框架,它可以高效地连接数据中心内和跨数据中心的服务,支持负载平衡.跟踪.运行状况检查和身份验证. gRPC通过使用 Protocol Buffers ...

  5. #DP#CF9D How many trees?

    题目 用\(n\)个点组成二叉树,问高度\(\geq h\)的有多少个. 分析 首先前缀和相减就能得到答案,做dp 设\(dp[n][h]\)表示节点数为\(n\),高度不超过\(h\)的树的个数 那 ...

  6. Git 删除 .gitignore 生成之前上传的文件

    清除缓存 git rm -r --cached . git add . 提交记录 git commit -m "chore: 清除缓存." git push

  7. 深入理解HashMap和TreeMap的区别

    目录 简介 HashMap和TreeMap本质区别 排序区别 Null值的区别 性能区别 共同点 深入理解HashMap和TreeMap的区别 简介 HashMap和TreeMap是Map家族中非常常 ...

  8. Python 中的字符串基础与应用

    在Python中,字符串可以用单引号或双引号括起来.'hello' 与 "hello" 是相同的.您可以使用print()函数显示字符串文字: 示例: print("He ...

  9. opengauss数据库-主从搭建

    opengauss 数据库-主从搭建 环境说明 软件下载 opengauss 下载地址:https://opengauss.org/zh/download/ 环境准备 关闭 SELINUX 修改 /e ...

  10. CentOS-6.4启动盘制作过程

    目标机器:ThinkPad X230 (i5-3210, 4G DDR3, 500G 7200转),预装win 8 目标系统:CentOS-6.4-x86_64-bin-DVD1.iso 主要参考文章 ...