javascript – 使用Knockout和webapi c上传图片#
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用Knockout和webapi c上传图片#,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2702字,纯文字阅读大概需要4分钟。
内容图文
我正在尝试使用Knokout JS和web api上传图像.这是我的代码
<div class="row">
<div class="col-sm-4">
<h3>Send Feedback</h3>
<form data-bind="submit: sendFeedback">
<div class="form-group">
<label>Feedback</label>
<textarea class="form-control" data-bind="value: feedbackText"></textarea>
</div>
<div class="form-group">
<label>Version Id</label>
<input class="form-control" type="text" data-bind="value: versionId" />
</div>
<div class="form-group">
<label>Image</label>
<input class="form-control" type="file"
data-bind="file: {data: fileInput, name: fileName, reader: someReader}" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</form>
</div>
我正在使用这个自定义绑定
https://github.com/TooManyBees/knockoutjs-file-binding
然后在我的脚本代码中我这样做
self.sendFeedback = function () {
self.result('');
var feedBackData = {
versionId: self.versionId(),
text: self.feedbackText(),
screenShot: self.fileInput
};
$.ajax({
type: 'POST',
url: apiUrl + '/Feedback/Add',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(feedBackData)
}).done(function (data) {
self.result("Done!");
}).fail(showError);
}
我不确定代码的服务器部分.到目前为止我写过这个
public void Add(HttpPostedFileBase screenShot, String versionId, String text)
{
String imgId = null;
int count = HttpContext.Current.Request.Files.Count;
if (screenShot != null && screenShot.ContentLength > 0)
{
Images img = Images.Create().Save();
imgId = img.Id;
BlobHelper.PutFile(imgId, screenShot.InputStream);
}
Feedback.Create(versionId, text, imgId).Save();
}
有关如何做到这一点的任何想法?
解决方法:
fileInput包含base64编码的文件数据.它是一个字符串,所以HttpPostedFileBase不起作用.
更改表单HTML:
<input class="form-control" type="file"
data-bind="file: {data: fileInput}" />
更改viewmodel代码,如下所示:
// store file data here
self.fileInput = ko.observable(); // is this present already?
var feedBackData = {
versionId: self.versionId(),
text: self.feedbackText(),
screenShot: self.fileInput()
};
$.ajax({
type: 'POST',
url: apiUrl + '/Feedback/Add',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(feedBackData)
}).done(function (data) {
self.result("Done!");
}).fail(showError);
如果控制器方法在API控制器中,它应该接受JSON,模型绑定器将提取值:
public void Add(String screenShot, String versionId, String text)
{
String imgId = null;
if(!String.IsNullOrEmpty(screenShot))
{
Byte[] data = Convert.FromBase64String(screenShot);
// rest of code omitted
抱歉,无法对此语法等进行测试,但应该让您走上正轨.
调试Knockout页面的一个好方法是在开发时使用这一行,这样你就可以看到viewModel中发生了什么:
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
有关更多帮助,请参见http://www.knockmeout.net/2013/06/knockout-debugging-strategies-plugin.html.
内容总结
以上是互联网集市为您收集整理的javascript – 使用Knockout和webapi c上传图片#全部内容,希望文章能够帮你解决javascript – 使用Knockout和webapi c上传图片#所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。