相关疑难解决方法(0)

从ASP.NET Web API中的控制器返回二进制文件

我正在使用ASP.NET MVC的新的WebAPI的网络服务,将成为了二进制文件,主要是.cab.exe文件.

以下控制器方法似乎有效,这意味着它返回一个文件,但它将内容类型设置为application/json:

public HttpResponseMessage<Stream> Post(string version, string environment, string filetype)
{
    var path = @"C:\Temp\test.exe";
    var stream = new FileStream(path, FileMode.Open);
    return new HttpResponseMessage<Stream>(stream, new MediaTypeHeaderValue("application/octet-stream"));
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

asp.net asp.net-mvc asp.net-web-api

313
推荐指数
7
解决办法
26万
查看次数

将音频(字节数组)发布到 MVC.NET Web Api

问题

我正在尝试将 Android 设备录制的音频发送到 MVC.NET Web Api。我通过传递简单的字符串参数来确认连接。然而,当我尝试传递从音频生成的字节数组时,我每次都会从服务器得到 500。我尝试了多种配置,但这是我目前拥有的:

MVC 网络 API

public class PostParms
{
    public string AudioSource { get; set; }
    public string ExtraInfo { get; set; }
}

public class MediaController : ApiController
{
    [HttpPost]
    public string Post([FromBody]PostParms parms)
    {
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(parms.AudioSource);
        return "success";
    }
}
Run Code Online (Sandbox Code Playgroud)

安卓代码

public class WebServiceTask extends AsyncTask<String, Void, Long>
{   
    @Override
    protected Long doInBackground(String... parms)
    {
        long totalsize = 0;
        String filepath = parms[0];
        byte[] fileByte = convertAudioFileToByte(new File(filepath));        

        //Tried base64 …
Run Code Online (Sandbox Code Playgroud)

c# audio asp.net-mvc android asp.net-web-api

2
推荐指数
1
解决办法
1万
查看次数

使用ASP.NET Web API下载二进制数据时,AngularJS GET byte []错误

有关此问题的其他背景信息,请参阅使用AngularJS和ASP.NET Web API上载/下载字节数组.

在处理用于上传/下载字节数组的TypeScript/AngularJS(v1.2.22)/ Web API解决方案时,我发现了AngularJS无法正确响应字节数组数据的客户端GET请求的情况.为了证明我的服务器代码,我在Angular之外创建了一些单独的XMLHttpRequest代码,它可以与Web API服务器代码一起正常工作.

  1. 在AngularJS代码中可能还有一些我仍然缺少的东西,但是我已经搜索了大量的文档,文章和代码示例,并且没有找到任何明显错误的代码.
  2. 我已经验证了通过Fiddler从服务器发送的数据对于AngularJS和XMLHttpRequest代码是相同的.
  3. Angular代码的第一个问题是它将数据解释为字符串,而不是字节数组,而XMLHttpRequest代码将该代码正确解释为字节数组.
  4. 第二个问题是AngularJS代码破坏了大于127的所有值(即128-255).我在下面列出了一个屏幕截图.
  5. 第三个问题是数据丢失.AngularJS代码中的重建数据只有217个字节而不是256个字节.

这是有效的XMLHttpRequest代码.请注意,响应是UInt8Array构造函数的有效参数.

    var oReq = new XMLHttpRequest();
    oReq.open("GET", "/api/Values", true);
    // Worked on IE, Chrome, and Firefox with this line commented out, Firefox docs say it should be declared.
    oReq.overrideMimeType("charset=x-user-defined");
    oReq.responseType = "arraybuffer";
    oReq.onload = function () {
        var arrayBuffer = oReq.response, bArray = new Uint8Array(arrayBuffer), str = "";
        if (arrayBuffer) {
            for (var i = 0; i < bArray.length; i++) {
                str += bArray[i] + ((i …
Run Code Online (Sandbox Code Playgroud)

javascript arrays binary-data angularjs

2
推荐指数
1
解决办法
5029
查看次数