【发布时间】:2016-01-16 09:26:42
【问题描述】:
我创建了 Rails 应用程序,因此我可以使用 API 部分。我可以使用 curl 成功地将文件上传到 rails 应用程序的数据库,但我不知道如何将文件类型/内容类型限制为 CSV。
csv_file.rb #model
class CsvFile < ActiveRecord::Base
# attachment :content_type => "text/csv"
# http://ryanbigg.com/2009/04/how-rails-works-2-mime-types-respond_to/
attachment :csv, extension: "csv", content_type: "text/csv"
end
csv_files.rb #控制器
class API::V1::CsvFilesController < ApplicationController
# see http://stackoverflow.com/questions/15040964/ for explanation
skip_before_filter :verify_authenticity_token
def index
@csv_files = CsvFile.all
if @csv_files
render json: @csv_files,
# each_serializer: PictureSerializer,
root: "csv_files"
else
@error = Error.new(text: "404 Not found",
status: 404,
url: request.url,
method: request.method)
render json: @error.serializer
end
end
def show
if @csv_file
render json: @csv_file,
# serializer: PictureSerializer,
root: "csv_file"
else
@error = Error.new(text: "404 Not found",
status: 404,
url: request.url,
method: request.method)
render json: @error.serializer
end
end
# POST /csv_files.json
def create
@csv_file = CsvFile.new(csv_params)
if @csv_file.save
render json: @csv_file,
# serializer: PictureSerializer,
meta: { status: 201,
message: "201 Created"},
root: "csv_file"
else
@error = Error.new(text: "500 Server Error",
status: 500,
url: request.url,
method: request.method)
render :json => @error.serializer
end
end
def update
end
def delete
end
private
def csv_params
end
end
【问题讨论】:
-
你问这是否应该工作?或者你试过这个但没有用?
-
当前代码已实现,但似乎无法正常工作,因为我可以上传非 CSV 文件。
-
什么显示/告诉你它不起作用?
-
我仍然可以上传非 CSV 文件。
-
尝试将
raise_errors: true选项添加到attachment定义中,看看会发生什么。
标签: ruby-on-rails ruby-on-rails-4 refile