Rails rails 保存 get/post 上传的文件

kun · 2022年08月27日 · 最后由 Rei 回复于 2022年08月27日 · 485 次阅读

我想在 rails 服务端保存我从客户端传上来的文件,保存成功给客户端返回文件的地址 这是 rails 的代码

def savefile
    @uploadfile=params[:uploadfile]
    render json: {name: "#{@uploadfile}"}
    return
end

这是 js 的代码

const form = new FormData;
        const uploadfile = await fs.readFile("./shared.ts");
        form.append('file', uploadfile, './shared.ts');
        const { data } = await axios.get<AutolabUserInfo>(`http://192.168.1.66:3000/savefiles/0/savefile`, form);

rails 返回的值是" . " 请问大佬我应该怎么取到 form 表单中传如的文件并保存下来

api :POST, "/wx_upload_file", "上传文件"
# @route POST /api/v1/wx_upload_file {format: :json} (api_v1_wx_upload_file)
def upload_file
  file_params = params[:file]

  blob = ActiveStorage::Blob.create_and_upload!(
    io: file_params,
    filename: file_params.original_filename,
    content_type: file_params.content_type
  )

  render_success response: { url: blob.url }
end

post 文件要用 post。 https://github.com/axios/axios#files-posting

保存文件有一些涉及安全的细节,建议用成熟的库处理,例如 Rails 自带的 ActiveStorage。https://guides.rubyonrails.org/active_storage_overview.html

需要 登录 后方可回复, 如果你还没有账号请 注册新账号