rails 上传文件
控制器文件
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 上传文件的更多相关文章
- Rails上传文件
1.view <%= form_tag({:method =>"post",:controller =>"welcome",:action=& ...
- Ajax.BeginForm 上传文件
在 Mvc 中上传文件时通常使用 Html.BeginForm 标签,同时对Form 添加属性 enctype = "multipart/form-data",前端代码如下: @H ...
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader
发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...
- asp.net mvc 上传文件
转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...
- app端上传文件至服务器后台,web端上传文件存储到服务器
1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...
- .net FTP上传文件
FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
- 前端之web上传文件的方式
前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...
- Django session cookie 上传文件、详解
session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ...
随机推荐
- Mybatis-Plus框架的BaseMapper的insert方法和自定义mapper里面的insert方法会用哪个
在Mybatis-Plus框架中,当一个接口继承了BaseMapper接口,并且绑定了一个xml文件时,如果这个接口和xml文件中都定义了相同的方法,那么在调用该方法时,会优先调用xml文件中的方法, ...
- ssh登录太慢了,每次都要20s
背景 大家工作时,少不了ssh登录各个服务器,我这边手里也有很多服务器,有一些登录很快就进去了,有些要卡半天才能进去.之前以为是公司网络问题,每次也就忍了,这次突然不想忍了,决定定位一下. 我这边的服 ...
- 12 JavaScript 关于eval函数
12 eval函数 eval本身在js里面正常情况下使用的并不多. 但是很多网站会利用eval的特性来完成反爬操作. 我们来看看eval是个什么鬼? 从功能上讲, eval非常简单. 它和python ...
- #并查集,线性筛#nssl 1470 X
分析 显然答案就是\(2^{连通块个数}-2\), 将每个数的质数所在的集合合并, 最后判断连通块个数即可(线性筛少了个等号改了半天QWQ) 代码 #include <cstdio> #i ...
- #链表#洛谷 3794 签到题IV
题目 给出一个长度为\(n\)的数列\(a\),求 \[\sum_{i=1}^n\sum_{j=i}^n[\gcd(a_{i\sim j})\;xor\;or(a_{i\sim j})=k] \] 分 ...
- #威佐夫博弈#洛谷 2252 [SHOI2002]取石子游戏
题目 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子. 游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子: 二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完 ...
- OpenHarmony Meetup常州站招募令
OpenHarmony Meetup 常州站正火热招募中! 诚邀充满激情的开发者参与线下盛会~ 探索OpenHarmony前沿科技,畅谈未来前景, 感受OpenHarmony生态构建之路的魅力! 线下 ...
- 狂神说Java——Mybatis学习笔记
前言:配合狂神老师的教学视频使用效果更佳: https://www.bilibili.com/video/BV1NE411Q7Nx/?spm_id_from=333.1007.top_right_ba ...
- Redis 19 SpringBoot集成
概述 SpringBoot 整合 Redis 是使用 SpringData 实现的. SpringData 是与 SpringBoot 齐名的顶级项目,整合了对常用数据库的模板型操作. 在 Sprin ...
- centos环境tomcat配置SSL
环境: centos7.9 tomcat9 jdk1.8 一.阿里云申请 免费SSL 按照官网的方法并未成功启动! 443 80端口加入安全组 阿里云申请免费ssl 下载后解压将localhost-r ...