使用api将图像保存到数据库中

时间:2019-05-06 06:47:18

标签: asp.net-mvc asp.net-web-api asp.net-core

我有一个Web应用程序,其中包含许多层(DAL,BLL,SL,UI),每一层都在一个单独的项目中。

我正在使用Ajax在表示层(UI)中使用Web API,而我正在使用单页应用程序。

示例:在表示层(UI)的家庭控制器中的索引动作中仅引用视图:

public class MaCityController : Controller
{
    public IActionResult Index()
    {
        return View("~/Views/Mainten/MasterFile/MaCity/Index.cshtml");
    }
}

在此视图中,我正在使用Web API和Ajax进行CRUD操作:

function Add() {     
        var NameAr = $('#NameAr').val();
        var NameEn = $('#NameEn').val();
        var Image = $('#FileName').val();
        var newData = new Object();

        newData.NameAr = NameAr;
        newData.NameEn = NameEn;
        newData.Image=Image;

        $.ajax({
            type: "POST",
            url: APIURL + "api/MaCity/Add",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(newData),
            success: function () {
                $('#myModal').modal('hide');
                debugger;
                loadData();

            },
            failure: function (data) {
                alert(data.statusText);
            },
            error: function (data) {
                alert(data.statusText);
            }
        });
    }
    }

我在Sl中的发布代码为

[HttpPost]
public IActionResult Add(City scItem)
{
        _unitOfWork.GetRepository<City>().Add(scItem);
        _unitOfWork.SaveChanges();
        return Ok();
}

其中api在另一个应用程序中的端口与表示层(UI)不同 并且任何处理数据库的操作都在SL中发生(UI中没有数据处理)。

我需要将图像上传到服务器,并将(图像服务器URL)保存到数据库中。

我读了很多文章,但是找不到解决我问题的方法。

有帮助吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过检查文件是否已添加到json请求对象中?您可以尝试几种方法,例如使用Telerik Fiddler之类的工具

在您的json post方法内,检查您的表单中是否有任何文件

 var file =$(this).prop('files')[0];

以下是一个示例

将图像添加到FormData

formdata = new FormData();
    if($(this).prop('files').length > 0)
    {
        var file =$(this).prop('files')[0];
        formdata.append("image", file);
    }

然后最后发布帖子

jQuery.ajax({
    url: "api_path,
    type: "POST",
    data: formdata,
    processData: false,
    contentType: false,
    success: function (result) {
         // if all is well
         // play the audio file
    }
});

您也可以尝试从Controller发送数据(假设您使用的是MVC风格)