如何使用 FOR json API 调用将图像保存在 mysql 数据库中以进行移动应用程序开发?

Posted

技术标签:

【中文标题】如何使用 FOR json API 调用将图像保存在 mysql 数据库中以进行移动应用程序开发?【英文标题】:How to save an image in mysql database unsing ROR json API call for mobile application development? 【发布时间】:2017-09-27 08:07:42 【问题描述】:

我的 json API 在下面 我正在使用careerwave gem “区号”:23, "标志": "/home/amulyatanksale/Desktop/the_hulk.jpg", "last_name": "传奇", “regionstate_id”:33, “姓名”:“约翰”, “角色id”:10, “电子邮件”:“jwsohny@gmail.com”, “密码”:“12345678”, "password_confirmation": "12345678", “地址”:“开普敦”, “第一平面”:12, “联系人”:“7897875887”, “is_auction_notification”:真

它显示以下错误

No such file or directory @ rb_sysopen - /home/amulyatanksale/Desktop/the_hulk.jpg

但如果在我的本地机器上运行相同的 API,它就可以工作 下面是调用代码

def create_user
begin
  Rails.logger.info "---------------ERROR WHILE REGISTER------#params[:logo], #params[:logo].split("/").last"
  parse_image_data(params[:logo], params[:logo].split("/").last)
  @user = User.new(register_user_params)
        @user.save
  Rails.logger.info "---------------ERROR WHILE REGISTER------#@user.to_json"
    @subscribeplan = Subscription.create(user_id: @user.id, planid: params[:plan_id], name: params[:sub_name], description: params[:description], price: params[:price], is_free: params[:is_free], totalpartscount: params[:totalpartscount] , startdate: Date.today, enddate: Date.today + 1.months)
  @subscribeplan.save
  @plan_id = @user.subscriptions.first.planid rescue nil
  user_type = @user.role.nil? ? "" : @user.role.name
  user_state = @user.regionstate.nil? ? "" : @user.regionstate.name
  user_city = @user.districtcity.nil? ? "" : @user.districtcity.name
  render status: 200, json:  result: :success, message: "Buyer Created.", first_name: @user.name, last_name: @user.last_name, email: @user.email, password: @user.password, logo: @user.logo, phone_no: @user.contactno, address: @user.address, user_type: user_type, registration_date: @user.created_at.to_date, state: user_state, city:user_city, email_auction_notification: @user.is_auction_notification, approval_status: @user.is_approved, user_id: @user.id, subscription_plan: @plan_id    
rescue Exception => e
  Rails.logger.info "---------------ERROR WHILE REGISTER------#@user.to_json"
  Rails.logger.info "---------------ERROR WHILE REGISTER------#e.to_json"
    render status: 400, json: errors: @user.errors.messages, status: :unprocessable_entity
end 

结束

def parse_image_data(base64_image, img_name) 如果 img_name 开始 upload_file = ActionDispatch::Http::UploadedFile.new(

            :tempfile => File.new(Rails.root.join(base64_image)),
            :filename => img_name,
            :type => Mime::Type.lookup_by_extension(File.extname(img_name)[1..-1]).to_s
          )
        rescue Exception => e
        end     
        params[:register_user][:logo] =  uploaded_file
  end

【问题讨论】:

您的 JSON 包含图像的路径,而不是图像本身。如果 API 与客户端位于同一台机器上,那么这可能会起作用,因为服务器将能够从同一路径读取该图像。但是,如果 API 在不同的机器上运行,这将无法工作,因为您发送给 API 的路径中不存在该文件。您需要将图像上传到 API 才能完成这项工作。请显示您用于生成 JSON 的代码以及使用哈希的 API 中的代码。 "/home/amulyatanksale/Desktop/the_hulk.jpg" 是一个字符串,而不是一个文件。如果要上传,API 需要接受 file 参数。 感谢@spickerman 的想法,我也用代码更新了查询,请建议我在某处错了 【参考方案1】:

您正在传递文件的路径,这是因为它仅在您的本地工作。您需要将表单提交为“multipart/form-data

http://guides.rubyonrails.org/form_helpers.html#uploading-files

【讨论】:

以上是关于如何使用 FOR json API 调用将图像保存在 mysql 数据库中以进行移动应用程序开发?的主要内容,如果未能解决你的问题,请参考以下文章

xml 如何使用URI以json格式将多个图像保存到localdb

使用php将json api结果以换行符分隔格式保存到json文件

如何从 GraphQL API 调用中获取 JSON 对象元素? [关闭]

将大型 JSON 直接从 Java 中的 REST API 响应流保存为文本

如何使用 NSURlConnection 从 Url 下载图像以保存在手机缓存中

如何将 API 数据保存到 csv 文件中?另外如何修复回溯错误?