使用libcurl和C 将图片上传到密码保护的目录
Uploading a picture to a Password Protected Directory using libcurl and C++
我正在尝试使用带有libcurl的C 应用程序上传图片到我的服务器上,我的服务器中的文件是一个受保护的目录,我尝试了我所知道的一切,但它不起作用。<<<<<<<<<<<<<<
struct curl_slist *headerlist = NULL;
const char * Picture = "C:xxxx";
FILE *fd = fopen(Picture, "rb");
struct stat file_info;
fstat(fileno(fd), &file_info);
headerlist = curl_slist_append(headerlist, "user : xxxx");
headerlist = curl_slist_append(headerlist, "password : xxxxx");
headerlist = curl_slist_append(headerlist, "Content-Type: image/jpeg");
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://xxxx.000webhostapp.com/Pictures");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_READDATA, fd);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (curl_off_t)file_info.st_size);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
{
MessageBox::Show("Picture Failed");
}
curl_easy_cleanup(curl);
curl_global_cleanup();
user
和password
不是HTTP标头,因此您不应通过CURLOPT_HTTPHEADER
传递它们。改用CURLOPT_USERNAME
和CURLOPT_PASSWORD
。还要查看CURLOPT_HTTPAUTH
。
尝试以下操作:
curl_global_init(CURL_GLOBAL_ALL);
...
const char *Picture = "C:\xxxx";
FILE *fd = fopen(Picture, "rb");
if (!fd)
{
MessageBox::Show("Cannot Open Picture File");
}
else
{
struct stat file_info;
fstat(fileno(fd), &file_info);
curl = curl_easy_init();
if (!curl)
{
MessageBox::Show("Cannot Initialize CURL Session");
}
else
{
struct curl_slist *headerlist = curl_slist_append(NULL, "Content-Type: image/jpeg");
curl_easy_setopt(curl, CURLOPT_URL, "http://xxxx.000webhostapp.com/Pictures");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_easy_setopt(curl, CURLOPT_USERNAME, "xxxx");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "xxxxx");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_READDATA, fd);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (curl_off_t)file_info.st_size);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
{
MessageBox::Show("Picture Failed");
}
curl_easy_cleanup(curl);
}
fclose(fd);
}
...
curl_global_cleanup();
相关文章:
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 为什么在保护模式下继承升级不起作用
- 访问被拒绝后,c++中的故障保护代码
- C++:无法访问声明的受保护成员
- 发送一个带有libcurl C++问题的帖子请求:s
- 为什么您需要C++头文件的包含保护
- lock_guard是否保护返回值
- 如何使用 c++ 在 sqlite3 中打开受密码保护的数据库?
- 无法在 Cocos2dx 中使用受密码保护的 zip 文件
- 如何保护系统和数据库之间的密码
- 使用libcurl和C 将图片上传到密码保护的目录
- libcurl,如何使用字符串作为密码
- 如何使用MS CryptoAPI导出受密码保护的私钥
- 特征错误:请使用密码保护您的最小值
- 检测受密码保护的 MS Office 文件在 C/C++
- 如何在 Linux 中使用C++下载受密码保护的 URL
- QuaZip -密码保护的文件
- 密码保护嵌入式固件下载
- 我可以用密码保护应用程序吗
- 库解压缩密码保护的文件