- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于我正在试验 ,这也许是一个愚蠢的问题。 libcurl ,也可能是无法做到的情况。让我首先向您描述我想要实现的行为。
假设我想下载一些文件,我可以逐个请求这个文件,直到我得到整个文件。现在,不是将这些数据存储到临时文件中,而是每次我获得这些片段或块中的一个时,我想将此片段上传到另一台服务器。两个服务器都是 HTTP 服务器,第二个只接受文件的上传,使用带有 multipart/form-data
的 POST .
我有一个想法,但我无法让它发挥作用,而且仍然不确定是否可行。我的想法是模仿我在此 question 中找到的解决方案,但在这里他们使用命令行 curl 第二台服务器是 FTTP 服务器。
所以想法是创建一个管道,并使用这个管道将碎片传递给负责上传的部分。让我们给你看一个草图,以防你在我糟糕的英语中迷路:
也许是 管道 根本不需要,因为 libcurl 允许您访问这些正在下载的数据块,例如 getinmemory example ,但我不知道是否可以将这些碎片传递给一个 multipart/form-data
请求,无需将数据存储到文件中,然后告诉 libcurl 上传该文件。
正如我之前所说,我尝试使管道的这种解决方案起作用,但无法使其起作用。让我展示我不完整的代码,让你得到一个具体的想法:
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include <curl/curl.h>
#define WE 1
#define RE 0
/*down_up video*/
CURLcode down_up(void)
{
CURLcode ret;
const char *url_down = "http://localhost:4000/static/videos/1.mp4";
const char *url_up = "http://localhost:4000/upload";
int pdf[2]; /*write end and read end*/
if(pipe(pdf) == -1)
errExit("pipe");
pid_t pid = fork();
switch(pid) {
case -1:
errExit("ok");
case 0:
/*closing unused WE in child proccess*/
if(close(pdf[WE]) == -1)
errExit("Close");
break;
default:
/*parent process*/
/*closing the RE on parent proccess*/
if(close(pdf[RE]) == -1)
errExit("Close");
break;
}
switch(pid) {
case -1:
errExit("ok");
case 0:
/*child process*/
CURL *curl_up;
curl_up = curl_easy_init();
curl_easy_setopt(curl_up, CURLOPT_URL, url_up);
/*upload file with multipart/form-data, reading chunks from pipe*/
break;
default:
/*parent process*/
CURL *curl_down;
curl_down = curl_easy_init();
curl_easy_setopt(curl_down, CURLOPT_URL, url_down);
/*download file, and writing pieces into the pipe*/
break;
}
curl_easy_cleanup(curl_down);
curl_easy_cleanup(curl_up);
curl_down = NULL;
curl_up = NULL;
return ret;
}
int main(void)
{
CURLcode ret;
ret = download_upload();
if(ret != CURLE_OK)
return 1;
return 0;
}
在这里,我尝试使用
parent process
下载,并使用
child process
上传.为了将数据从父进程传递到子进程,我关闭了
阅读结束(RE) PIPE 的
parent process
,并关闭
写完(WE) PIPE 的
child process
.我们得到这样的东西:
最佳答案
是的,这当然是可能的。
可以使基本功能像这样工作。两个线程:
关于c - 是否可以使用 libcurl 同时下载和发布 multipart/form-data 相同的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68240299/
我构建了 nss 的 64 位版本,并尝试使用它来使用 --without-ssl 和 --with-nss=NSS_ROOT 选项构建curl 库。 在配置阶段,我看到以下内容: checking
我访问了 4 页。每个页面设置cookies。我如何向 libcurl 询问所有 cookie 或特定 cookie(如“session_id”)的值? 最佳答案 curl_easy_getinfo
我正在使用 libcurl 开发一个 c 程序。 当我构建我的程序时,我可以使用不同版本的 libcurl。 当我从版本更改为其他(libcurl)时,我必须更改源代码中的一些 block 以使其适应
我需要使用“Content-Type: application/json”进行 HTTP DELETE 调用。我如何使用 libcurl 接口(interface)来做到这一点。 最佳答案 我认为在
我通常是一名 Java 开发人员,但我现在正在编写一个 C++ 库,他们将使用 LibCurl。而且我对 C++ 世界一无所知! 我正在写的实际上是供其他开发人员使用的库(它是用于访问我们的 API
我刚刚注意到当我使用 IP 进行 HTTPS 调用时,libcurl 没有设置 SNI 字段。我发现了这个: https://github.com/curl/curl/blame/master/lib
我正在开发 Linux 嵌入式应用程序,它充当客户端并使用 libCurl 从 https 服务器接收数据。我的应用程序的要求是接受过期的证书并继续建立连接。 我找不到任何可以使用 curl_easy
我正在尝试在 OS X 10.11(目标 10.8)上构建启用 SSL 的静态 libcurl.a: export MACOSX_DEPLOYMENT_TARGET="10.8" ./configur
我正在尝试执行rake db:create命令。我收到以下错误 无法打开库'libcurl':libcurl:无法打开共享对象文件:无此类文件或目录。 Could not open library '
我之前问过一个关于 libcurl 的问题。我已经设法自己找到了答案,并且很乐意分享我是如何解决这个问题的,只要我确定它有效。事情是这样的,在此之前,当我尝试编译时链接器会出错,经过一些搜索和反复试验
我已经使用以下配置标志成功地在系统和非 root 用户上安装了 libcurl: ./configure --prefix=/path/to/lib --exec-prefix=/path/to/li
我一直在尝试通过将 libcurl.a 添加到我的 Xcode 7.2 项目来消除对 libcurl.4.dylib 的任何依赖。我构建了一个全新的 libcurl 并将其放在/usr/local/l
我试图在 CentOS6 上安装 R 3.3.2。但不知何故我无法使 libcurl 支持 https。 Here有人建议安装 libcurl:libcurl-devel (rpm) 或 libcur
我试图 curl 到我的本地主机 laravel 站点。我正在使用 XAMPP 7.1 当我尝试重新连接此代码时,总是会出现错误(而不是 200 OK 响应) Fatal error: Uncaugh
在我的开发过程中,我的代码运行正常。当我推送到我的服务器时,它变成了错误。 cURL 错误 6:无法解析主机:http(请参阅 http://curl.haxx.se/libcurl/c/libcur
GuzzleHttp\Exception\RequestException cURL 错误 60:SSL 证书问题:无法获取本地颁发者证书(请参阅 https://curl.haxx.se/libcu
我遇到了这个错误 cURL error 3: malformed (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)将多个模型保存/创建到
如何强制libcurl通过ipv4或ipv6访问以双堆栈模式运行的服务器?使用IP地址应该不难,但是我正在寻找可以与DNS配合使用的东西... 最佳答案 你打赌可以将config CURLOPT_IP
我正在使用 libcurl 从 url 下载文件。文件的原始大小是 1700k,但我只得到 1200k。在我用数据包嗅探器检查后,我意识到数据是以分块编码和 gzip 格式传入的。此外,我的进度回调始
我正在为我的一个项目使用 libcurl。我知道 curl 不用于发出多个并发请求,但 libcurl 是否支持它? 我知道还有其他工具,例如 ab,但 libcurl 提供了很多功能。我再次知道我可
我是一名优秀的程序员,十分优秀!