Javascript 使用angular js通过rails回形针提交文件
我试图使用angular将一个文件作为参数发送到rails,然后让rails通过回形针将该文件保存为用户附件。我得到的最远的结果是让rails上传一些东西,但它最终是一个带有单行“object file”的txt文件 这是相关的角度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);
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