C# Asp.net核心Web API-将多个图像从blob存储下载到zip文件(通过Axios get)

C# Asp.net核心Web API-将多个图像从blob存储下载到zip文件(通过Axios get),c#,vue.js,asp.net-core,asp.net-web-api,axios,C#,Vue.js,Asp.net Core,Asp.net Web Api,Axios,我正在尝试下载一个包含许多文件(各种类型)的zip文件-虽然我确实下载了一个zip文件,但当我尝试打开它时,它不幸地抛出以下错误: 这些图像使用azure blob存储进行存储 如果你有任何想法,请帮忙 我在Vue.js前端有一个按钮,可调用以下命令: GetAllAssetResources ({commit},id) { console.log("Getting Asset Resources:" + id); return new Prom

我正在尝试下载一个包含许多文件(各种类型)的zip文件-虽然我确实下载了一个zip文件,但当我尝试打开它时,它不幸地抛出以下错误:

这些图像使用azure blob存储进行存储

如果你有任何想法,请帮忙

我在Vue.js前端有一个按钮,可调用以下命令:

    GetAllAssetResources ({commit},id)
    {
        console.log("Getting Asset Resources:" + id);
        return new Promise((resolve) => {
            axios.get(CONFIG.platformEndPoints+  '/asset/downloadResources/' + id)
            .then( (response) => {
                const url = window.URL.createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', 'resources.zip');
                document.body.appendChild(link);
                link.click();
            })
        })
    }
这将调用我的控制器方法(使用C#):

[HttpGet]
公共异步任务下载资源(字符串guid)
{
返回文件(wait_ResourceService.DownloadAllAssetResources(guid),MediaTypeNames.Application.Octet,“resources”);
}
这就叫我的服务:

    public async Task<byte[]> DownloadAllAssetResources(string guid)
    {
        var assetDetails = await _AssetDetails.FindAsync(guid);
        var resources = assetDetails.res.ToList();
        byte[] archiveFile;

        await using (var archiveStream = new MemoryStream())
        {
            using (var archive = new ZipArchive(archiveStream, ZipArchiveMode.Create, true))
            {
                foreach (var file in resources)
                {
                    var fileName = guid+ "_" + file.name;
                    var zipArchiveEntry = archive.CreateEntry(fileName, CompressionLevel.Fastest);
                    var bytes = await _Storage.GetBytes("resources", fileName);

                    await using (var zipStream = zipArchiveEntry.Open())
                    {
                        zipStream.Write(bytes, 0, bytes.Length);
                    }
                }
            }

            archiveFile = archiveStream.ToArray();
        }

        return archiveFile;
    }
公共异步任务下载AllAssetResources(字符串guid)
{
var assetDetails=await_assetDetails.FindAsync(guid);
var resources=assetDetails.res.ToList();
字节[]存档文件;
等待使用(var archiveStream=new MemoryStream())
{
使用(var archive=new ZipArchive(archiveStream,ZipArchiveMode.Create,true))
{
foreach(参考资料中的var文件)
{
var fileName=guid+“”+file.name;
var zipArchiveEntry=archive.CreateEntry(文件名,CompressionLevel.faster);
var bytes=wait_Storage.GetBytes(“资源”,文件名);
等待使用(var zipStream=zipArchiveEntry.Open())
{
zipStream.Write(字节,0,字节.长度);
}
}
}
archiveFile=archiveStream.ToArray();
}
返回归档文件;
}

这只是更新axios调用以包含响应类型的一个例子:

        GetAllAssetResources ({commit},assetDetailid)
    {
        console.log("Getting Asset Resources:" + id);
        return new Promise((resolve) => {
            axios({
                url: CONFIG.platformEndPoints+  '/asset/downloadResources/' + id,
                method: 'GET',
                responseType: 'blob'})
            .then( (response) => {
                const url = window.URL.createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', 'resources.zip');
                document.body.appendChild(link);
                link.click();
            })
        })
    },
        GetAllAssetResources ({commit},assetDetailid)
    {
        console.log("Getting Asset Resources:" + id);
        return new Promise((resolve) => {
            axios({
                url: CONFIG.platformEndPoints+  '/asset/downloadResources/' + id,
                method: 'GET',
                responseType: 'blob'})
            .then( (response) => {
                const url = window.URL.createObjectURL(new Blob([response.data]));
                const link = document.createElement('a');
                link.href = url;
                link.setAttribute('download', 'resources.zip');
                document.body.appendChild(link);
                link.click();
            })
        })
    },