【发布时间】:2019-03-29 10:58:19
【问题描述】:
我在 Ember.js 中上传图片时遇到问题
我有一个创建用户的表单:
<div class="container">
<form onsubmit={{action "createUser"}} enctype="multipart/form-data">
<div class="form-group">
<label for="firstName">First name: </label>
{{input type="text" class="form-control" id="firstName" required="true" value=firstName}}
</div>
<div class="form-group">
<label for="lastName">Last name: </label>
{{input type="text" class="form-control" id="lastName" required="true" value=lastName}}
</div>
<div class="form-group">
<label for="age">Age: </label>
{{input type="number" class="form-control" id="age" required="true" value=age}}
</div>
<div class="form-group">
<label for="job">Job: </label>
{{input type="text" class="form-control" id="job" required="true" value=job}}
</div>
<div class="form-group">
<label for="image">Picture: </label>
{{input type="file" class="form-control" id="image" value=image}}
</div>
<button type="submit" class="btn btn-info">Create</button>
</form>
我知道我应该用 base64 对图像进行编码,但我不知道该怎么做,因为我以前从未这样做过。
在视图中,这就是我试图获取图像的方式(我知道这不是我应该做的,但我不知道该怎么做):
<div class="container">
<h1>{{model.firstName}} {{model.lastName}}</h1>
<p>Age: {{model.age}} years old</p>
<p>Job: {{model.job}}</p>
<img src="{{model.image}}" alt="img" id="image">
</div>
有什么想法、建议、帮助吗?
编辑:
actions: {
createUser(event) {
event.preventDefault();
let user = this.store.createRecord('user', {
firstName: this.firstName,
lastName: this.lastName,
age: this.age,
job: this.job,
image: this.image
});
user.save().then (() => {
this.transitionToRoute('user', user.id);
});
}
}
【问题讨论】:
-
您可以展示您的
createUser操作吗?您的后端对您的图片有何期望? -
我在原始帖子中添加了我的 createUser 操作。实际上我没有后端,我正在使用 mirage,我不需要保存我正在创建的数据。
-
mirage 仅用于测试。最后不保存你创建的东西是没有用的,对吧?虽然海市蜃楼很有用,但您仍然需要了解您的实际后端应该如何工作。对于图像,我通常会在模型中放置一个 URI。您提到了一些关于 base64 的内容,但没有详细说明。你能解释一下你来到base64,你想要什么?
-
嗯,这只是一个练习,我不需要后端所以......但如果我必须这样做,你建议使用什么?基本上有人向我解释说我应该对我的图像进行编码并将结果放在一个字符串中,这就是我卡住的地方????
标签: ember.js ember-data ember-cli