|
- class Admins::FilesController < Admins::BaseController
- before_action :convert_file!, only: [:create]
-
- def create
- File.delete(file_path) if File.exist?(file_path) # 删除之前的文件
-
- Util.write_file(@file, file_path)
-
- render_ok(
- source_id: params[:source_id],
- source_type: params[:source_type].to_s,
- suffix: params[:suffix].presence,
- url: file_url
- )
- rescue StandardError => ex
- logger_error(ex)
- render_error('上传失败')
- end
-
- private
-
- def convert_file!
- max_size = 10 * 1024 * 1024 # 10M
- if params[:file].class == ActionDispatch::Http::UploadedFile
- @file = params[:file]
- render_error('请上传文件') if @file.size.zero?
- render_error('文件大小超过限制') if @file.size > max_size
- else
- file = params[:file].to_s.strip
- return render_error('请上传正确的图片') if file.blank?
- @file = Util.convert_base64_image(file, max_size: max_size)
- end
- rescue Base64ImageConverter::Error => ex
- render_error(ex.message)
- end
-
- def file_path
- @_file_path ||= begin
- case params[:source_type].to_s
- when 'Shixun' then
- Util::FileManage.disk_filename('Shixun', params[:source_id], params[:suffix].presence)
- else
- Util::FileManage.disk_filename(params[:source_type].to_s, params[:source_id].to_s, params[:suffix].presence)
- end
- end
- end
-
- def file_url
- Util::FileManage.disk_file_url(params[:source_type].to_s, params[:source_id].to_s, params[:suffix].presence)
- end
- end
|