curl报错:23
来源:16-9 实现下载任务的添加-2

L_Carnegie
2023-04-09
用curl请求尝试下载ubuntu18.04,报错,错误码:23,具体信息如下:
E:\C_ProgramSpace\Chapter16\cmake-build-debug-mingw\bin\downloader.exe
HTTP/1.1 200 OK
Date: Sun, 09 Apr 2023 09:08:31 GMT
Server: Apache/2.4.29 (Ubuntu)
Last-Modified: Wed, 15 Sep 2021 20:42:31 GMT
ETag: “95da8000-5cc0ebcbeba61”
Accept-Ranges: bytes
Content-Length: 2514124800
Content-Type: application/x-iso9660-image
[Thread-14364] (http_manager.c:86) RetrieveOutputNameFromUrl: decode filename: ubuntu-18.04.6-desktop-amd64.iso
[Thread-14364] (http_manager.c:143) CurlBodyFunction: Fail to open file: //ubuntu-18.04.6-desktop-amd64.iso
[Thread-14364] (main.c:56) OnProgress: 16384/2514124800
[Thread-14364] (main.c:64) OnError: error: 23 Failed writing received data to disk/application
Process finished with exit code 0
代码如下:
/**
-
处理请求体
-
@param buffer
-
@param size
-
@param nitems
-
@param request_context
-
@return
*/
size_t CurlBodyFunction(char *buffer, size_t size, size_t nitems, RequestContext *request_context) {
//判断文件是否打开
if (!request_context->output_stream) {
if (!request_context->output_filename) {
RetrieveOutputNameFromUrl(request_context);
}
}if (request_context->output_filename) {
curl_easy_getinfo(request_context->curl, CURLINFO_RESPONSE_CODE, &request_context->response_code);if (request_context->response_code == 206) { request_context->output_stream = SmartFOpenFileInDirectory( request_context->download_directory, request_context->output_filename, "ab"); } else { request_context->output_stream = SmartFOpenFileInDirectory( request_context->download_directory, request_context->output_filename, "wb"); } /**打印错误信息**/ if (!request_context->output_stream) { PRINTLNF("Fail to open file: %s/%s", request_context->download_directory, request_context->output_filename); return -1; }
} else {
return -1;
}if (request_context->output_stream) {
fwrite(buffer, size, nitems, request_context->output_stream);
}return size * nitems;
}
/**
测试程序
**
static void TestHttp() {
Request request = {
.progress_callback = OnProgress,
.error_callback = OnError,
.success_callback = OnSuccess
};
RequestContext *context = CreateRequestContext(&request,
"https://releases.ubuntu.com/bionic/ubuntu-18.04.6-desktop-amd64.iso",
"/");
SendRequest(context);
if (context->curl_code == CURLE_OK) {
request.success_callback(request.receiver, "OK");
} else {
request.error_callback(request.receiver, context->curl_code, curl_easy_strerror(context->curl_code));
}
DestroyRequestContext(context);
}
1回答
-
bennyhuo
2023-04-09
Failed writing received data to disk/application
是不是你本地空间不足?看样子是写入文件失败了。找个小点儿的文件试试00
相似问题