Javascript 使用angular js通过rails回形针提交文件

Javascript 使用angular js通过rails回形针提交文件,javascript,ruby-on-rails,ruby,angularjs,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby,Angularjs,Ruby On Rails 3,我试图使用angular将一个文件作为参数发送到rails,然后让rails通过回形针将该文件保存为用户附件。我得到的最远的结果是让rails上传一些东西,但它最终是一个带有单行“object file”的txt文件 这是相关的角度 a.uploadAnonRes = function(app){ if(window.FileReader){ console.log("supported")}; console.log(($('.anonUploadField'))[0].files);

我试图使用angular将一个文件作为参数发送到rails,然后让rails通过回形针将该文件保存为用户附件。我得到的最远的结果是让rails上传一些东西,但它最终是一个带有单行“object file”的txt文件

这是相关的角度

a.uploadAnonRes = function(app){
  if(window.FileReader){ console.log("supported")};
  console.log(($('.anonUploadField'))[0].files);
  http = {
    method: "PUT",
    url: '/admin/upload_anon_res.json',
    params: {
      anon_file: btoa(($('.anonUploadField'))[0].files[0]),
      user_id: app.raw_app.user_id
    }
  };
  $http(http).success(function(data){
      console.log("success");
  });
};
以下是相关的轨道

def upload_anon_res
 user = User.find(params[:user_id])
 user.anon_resume = decode_res
 user.save
 respond_to do |format|
  format.json{ render json: user, root: false }
 end
end

def decode_res
 decoded_data = Base64.decode64(params[:anon_file])
 data = StringIO.new(decoded_data)
 return data
end
最后,我尝试使用的文件类型是doc/docx。我试图避免添加新的依赖项,但如果没有其他好方法,那就这样吧。我真的很感谢任何帮助/建议。

这对我帮助很大,但我会仔细检查每一部分,以获得完整的答案

假设您有一个
用户
模型,该模型具有
化身
属性

从你的角度来看:

<input type="file" name="avatar" onchange="angular.element(this).scope().uploadFile(this.files)" />
在UserController.rb中:

class UserController < ApplicationController
  def update
    @user = User.find(params[:id])
    @user.assign_attributes(user_allowed_parameters)
    if (@user.save)
      render json: {msg: 'Successfully updated'}
    else
      render json: {msg: @user.errors.full_messages}, status: 500
    end
  end

  private

  def user_allowed_parameters
    params.fetch(:user, {}).permit(
      :first_name, 
      :last_name,
      :email,
      :avatar
    )
  end
end
class UserController
fd.append('user[avatar]',files[0])是我花了好几个小时寻找的。你是个圣人!
class UserController < ApplicationController
  def update
    @user = User.find(params[:id])
    @user.assign_attributes(user_allowed_parameters)
    if (@user.save)
      render json: {msg: 'Successfully updated'}
    else
      render json: {msg: @user.errors.full_messages}, status: 500
    end
  end

  private

  def user_allowed_parameters
    params.fetch(:user, {}).permit(
      :first_name, 
      :last_name,
      :email,
      :avatar
    )
  end
end