Angularjs:从$ scope / varbinary(max)中的$ scope保存base64映像 - SQL Server

时间:2016-12-30 13:05:31

标签: angularjs asp.net-web-api2

我遇到了将我的imagem base64保存在MSSQL数据库中的问题。我创建了一个表格TBEquipamento,其中包含一个字段FotoEquipamento varbinary(max);

我还使用Web API 2创建了一个Web服务:

[HttpPost]
[Route("api/insertequipamento")]
[ResponseType(typeof(TBEquipamento))]
public async Task<IHttpActionResult> insertequipamento([FromBody] TBEquipamento addequipamento){

                objapi.TBEquipamento.Add(addequipamento);
                await objapi.SaveChangesAsync();

                return Ok("confirmationSuccess");
 }

我在我的网络服务中检查了我的表格字段FotoEquipamento也是varbinary(max)。它到目前为止一切都还可以。

现在我的Angularjs,我在base64中有一张图片,如下例所示:

$scope.FotoEquipamento: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RDoRXhpZgAATU0AKgAAAAgABAE7AAIAAAAKAAAISodpAAQAAAABAAAIVJydAAEAAAAUAAAQzOocAAcAAAgMAAAAPgAAAAA [...]

如果我将字段$ scope.FotoEquipamento设置为null,如: $ scope.FotoEquipamento = null; 并将所有从Angularjs传递给WebService,它可以完美地工作。但是当我使用base64数据传递$ scope.FotoEquipamento时,它会给我一个错误。

是的,有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我在angularjs,webapi环境和sql server中做了类似的事情。与您的实现的不同之处在于,我只是传递纯base64编码的图像而没有引导mimetype,编码信息“data:image / jpeg; base64”。 在通过webapi调用保存之前,代码段显示了准备二进制数据(图像,...)的相关代码。

 $scope.saveAttachment = function (content, filename) {
       // get empty default model record from database
       var newrecord;
       ...
       content = content.substr(content.indexOf("base64,") + "base64,".length);
       dataService.saveRecord(content_table, newrecord, 'id')
           .then(function (inserted) {
            newrecord["id"] = inserted["id"]; // get identity value from database insert ;
       });
  });
                }