首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ASP.NET 2(打印文本)将数据和图像传递给“核心”Web?

如何使用ASP.NET 2(打印文本)将数据和图像传递给“核心”Web?
EN

Stack Overflow用户
提问于 2017-01-02 11:07:21
回答 2查看 5.1K关注 0票数 9

我的代码只能将数据传递给web,但是我希望在、相同请求、中传递数据和图像,而不是使用角2+类型记录和ASP.Net核心Web在不同请求中传递数据和图像。

将数据传递给API的代码:

角码:

代码语言:javascript
复制
   create(user) {
    return this.authHttp.post(this._baseUrl + 'user/', JSON.stringify(userData)).map((res: Response) => {
        return res;
    }).catch(this.configService.handleError);
}

API代码:

代码语言:javascript
复制
    [HttpPost]
    public IActionResult Create([FromBody]UserModel user)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        //save user
        _userRepository.Add(user);
        _userRepository.Commit();

        return new OkObjectResult(user.UserId);
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-02 11:54:33

解决方案1:

最简单的方法是将图像作为base64字符串发送。

只需创建一个简单的JavaScript函数来读取文件并将其转换为base64字符串。在发送文件之前执行--可能改换事件在<input>上将为您完成任务。

然后,您可以直接将其存储在DB中(如果需要,也可以将其保存为服务器上的文件)。

存储为base64字符串的图像可以通过浏览器直接发回和显示,而不需要其他操作,例如:

<img src="data:image/bmp;base64,[base64EncodedImageHere]" />

解决方案2:

前部:

如果使用的是HTML5和文件上载控件,只需将表单编码设置为multipart/form-data

代码语言:javascript
复制
<form method="post" enctype="multipart/form-data">

后端:

模型中的属性应该具有IFormFile类型,然后可以将文件保存在服务器上:

代码语言:javascript
复制
IFormFile file;

using (var fileStream = File.Create( [file path here] ))
{
    await file.CopyToAsync(fileStream);
    await fileStream.FlushAsync();
}
票数 5
EN

Stack Overflow用户

发布于 2017-01-02 12:05:28

只需设置您的模型,并发布/通过webapi发布它,就像您习惯的那样。我假设您有一个web模型对象,为结构化数据和图像提供属性。通常是sql服务器中的var二进制文件(Max)。

在下面的片段中,我按照您的要求使用了“new附件”对象,它实际上是一个webapi模型。

为了获得一个新的空附件对象,我首先针对用于存储图像的webapi模型做了一个GET。在下一步中,我将设置这个模型的属性,包括图像数据本身(一个base64编码的)字符串。最后,我确实把/POST保存在数据库中的对象)客户端:角2

代码语言:javascript
复制
         this.dataService.getRecord('MT_DOKUMENTATION', -1)
            .subscribe((data: any[]) => {
                if (data) {
                var newattachment: any = data;
                newattachment.dokumentation = this.attachmentdata.split("base64,")[1];
                this.dataService.saveRecord('MT_DOKUMENTATION', "id", newattachment)
                    .subscribe((data: any[]) => {
                        var newrec: any = data;
                        ...
                    },
                    error => {
                        console.log(error);
                    },
                    () => {
                        console.log('Image Save complete')
                    });
                });

服务器端(C#,Web ):

代码语言:javascript
复制
        // PUT: api/MT_DOKUMENTATION/5
        [ResponseType(typeof(void))]
        public async Task<IHttpActionResult> PutMT_DOKUMENTATION(int id, MT_DOKUMENTATION mT_DOKUMENTATION)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.Entry(mT_DOKUMENTATION).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
               ...              
            }

            return Ok(mT_DOKUMENTATION);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41425670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档