javascript - 如何将对象从 JavaScript 上传到 Rest API

标签 javascript ajax asp.net-web-api2

我有一个 Rest API:

[HttpPost]
[Route("Services/Image/Upload")]
public string Upload([FromBody]GalleryItem galleryItem)
{
    try
    {
        var appSettings = ConfigurationManager.AppSettings["GalleryPath"].ToString();

        using (FileStream fs = new FileStream(appSettings + galleryItem.KeyCode + ".jpg", FileMode.Create))
        {
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                byte[] data = Convert.FromBase64String(galleryItem.Base64);
                bw.Write(data);
                bw.Close();
            }
        }
        return "OK";
    }
    catch (Exception ex)
    {
        return ex.ToString();

    }
}

我从我的 Javascript 客户端调用它,例如:

var galleryItem = new Object();
galleryItem.Base64 = base64;
galleryItem.KeyCode = '1234';
url = "http://my domain name/api/Services/Image/Upload";
$.ajax({
    type: 'POST',         
    url: url,
    data: JSON.stringify(galleryItem),
    contentType: 'application/json; charset=utf-8',
    dataType: 'text/plain',
    success: function (msg) {
        alert('Image saved successfully !');
    },
    error: function (jqXHR, textStatus, err) {
        $('#error').html('Error: ' + err);
}
});

我的模型:

public class GalleryItem
{
    public string Base64 { get; set; }
    public string KeyCode { get; set; }
}

我通过移动设备对此进行了测试,因为我正在从相机拍摄图像以发送。

似乎什么都没发生?我只是“错误:错误”?

谢谢

附加: 移植到测试脚本后(希望我早点这样做)我发现错误是这样的:

net::ERR_NAME_NOT_RESOLVED

虽然我不确定为什么我从那个 api 调用另一个方法没有问题

最佳答案

解决了!

感谢上帝!

我将 url 更改为 relative:

url = "/api/Services/Image/Upload";

不带域名前缀。

它一定很困惑,认为它需要 cors? (这里猜)

关于javascript - 如何将对象从 JavaScript 上传到 Rest API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35085234/

相关文章:

javascript - 原型(prototype) AJAX 发布参数随机丢失

dependency-injection - OAuthAuthorizationServerProvider 实现中的 Autofac 依赖注入(inject)

c# - 无法为内容类型多部分配置 Web API

c# - 自定义 MultipartFormDataStreamProvider 上传后通过 WebApi 从 SQL 下载大文件

jquery - 我可以在 document.ready() 上获得 jQuery Deferred 吗?

php - 图片库,预加载与 AJAX

javascript - Create React App 中 Eject 做了什么?

javascript - 如何在jquery中的for循环中求和?

javascript - 将一个模块的工厂提供给另一个模块

javascript - 具有不同触发选项的单个 html 元素上的多个 tippy.js 实例