0

我有一个带有 C++ 驱动后端的 Angular 前端。我希望 C++ 后端从前端创建的 blob URL 中获取文件(使用 URL.CreateObjectURL)。

我尝试过使用 URLDownloadToFile:

HRESULT hr = URLDownloadToFile(NULL, theBlobURL, outfilename, 0, NULL);

以及卷曲:

                CURL* curl;
                FILE* fp;
                CURLcode res;

                curl = curl_easy_init();
                if (curl) {
                    fp = fopen(outfilename2, "wb");
                    curl_easy_setopt(curl, CURLOPT_URL, theBlobURL);
                    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
                    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);

                    res = curl_easy_perform(curl);
                    if (res != CURLE_OK)
                        fprintf(stderr, "curl_easy_perform() failed: %s\n",
                            curl_easy_strerror(res));

                    curl_easy_cleanup(curl);
                }

这两种方法都适用于传统的文件 URL(我用这个公共文件进行了测试),但我的 blob URL 失败了。URLDownloadToFile 将“指定的协议未知”作为 HRESULT 和 curl sau 给出“CURLE_COULDNT_RESOLVE_HOST”。

我已通过浏览器确认在我尝试打开 blob URL 时它仍然可用。

我需要做任何不同的事情来获得 blob 吗?

4

1 回答 1

0

Remy Lebeau 是正确的,Blob URL 是浏览器私有的。它不能在浏览器之外下载。

于 2021-06-30T20:10:56.313 回答