首页 > 其他分享 >libcurl上传文件崩溃

libcurl上传文件崩溃

时间:2024-07-29 10:52:27浏览次数:18  
标签:file setopt libcurl upload easy 崩溃 上传 curl CURLOPT

参考的官网demo写了上传文件的代码。

https://curl.se/libcurl/c/fileupload.html

#include <stdio.h>
#include <curl/curl.h>
#include <sys/stat.h>
#include <fcntl.h>
 
int main(void)
{
  CURL *curl;
  CURLcode res;
  struct stat file_info;
  curl_off_t speed_upload, total_time;
  FILE *fd;
 
  fd = fopen("debugit", "rb"); /* open file to upload */
  if(!fd)
    return 1; /* cannot continue */
 
  /* to get the file size */
  if(fstat(fileno(fd), &file_info) != 0)
    return 1; /* cannot continue */
 
  curl = curl_easy_init();
  if(curl) {
    /* upload to this place */
    curl_easy_setopt(curl, CURLOPT_URL,
                     "file:///home/dast/src/curl/debug/new");
 
    /* tell it to "upload" to the URL */
    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
 
    /* set where to read from (on Windows you need to use READFUNCTION too) */
    curl_easy_setopt(curl, CURLOPT_READDATA, fd);
 
    /* and give the size of the upload (optional) */
    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
                     (curl_off_t)file_info.st_size);
 
    /* enable verbose for easier tracing */
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
 
    res = curl_easy_perform(curl);
    /* Check for errors */
    if(res != CURLE_OK) {
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
    }
    else {
      /* now extract transfer info */
      curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed_upload);
      curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total_time);
 
      fprintf(stderr, "Speed: %lu bytes/sec during %lu.%06lu seconds\n",
              (unsigned long)speed_upload,
              (unsigned long)(total_time / 1000000),
              (unsigned long)(total_time % 1000000));
    }
    /* always cleanup */
    curl_easy_cleanup(curl);
  }
  fclose(fd);
  return 0;
}

  在windows下实测会崩溃。

       当时写的时候就纳闷,为啥不用写ReadFunction,只需要写ReadData传递文件句柄?

       补上

       curl_easy_setopt(curl, CURLOPT_READFUNCTION, &fread);

       正常了。


标签:file,setopt,libcurl,upload,easy,崩溃,上传,curl,CURLOPT
From: https://www.cnblogs.com/xuhuajie/p/18329620

相关文章

  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-56- 多文件上传 - 下篇
    1.简介前边的两篇文章中,宏哥分别对input控件上传文件和非input控件上传文件进行了从理论到实践地讲解和介绍,但是后来又有人提出疑问,前边讲解和介绍的都是上传一个文件,如果上传多个文件,Playwright是如何实现的呢?宏哥看了一下官方的API也有上传多个文件的API,那么今天就来讲解和介绍......
  • 使用 smart_open 从 http 下载 .gz 流并上传到 s3 存储桶
    我想从http流式下载.txt.gz文件并流式上传到s3存储桶,我已经做到了这一点,但它不起作用,我错过了什么?fromsmart_openimportopenassopenchunk_size=(16*1024*1024)http_url='http://someurl'withsopen(http_url,'rb',transport_params={'headers':{�......
  • 文件上传漏洞--之upload-labs靶场详解11-15关
    第11关第一步:查看源码这是一个白名单,里面限制了只可以提供它所规定文件jpg,png,gif。 这段PHP代码主要实现了文件上传的功能,并进行了一些条件判断和处理: 首先,定义了两个变量 $is_upload 并初始化为 false ,$msg 初始化为 null 。 然后,检查是否通过 PO......
  • 文件上传漏洞,看这一篇文章就够了
    文件上传漏洞文件上传漏洞介绍就是指用户上传了一个可执行的脚本文件,并通过脚本文件获得了执行服务器端命令的能力,出问题的地方在于怎么处理、解释文件,那么攻击方就要思考如何绕过检测和过滤文件上传漏洞的危害上传文件是web脚本语言,服务器的web容器解释并执行了用户上......
  • 鸣潮PC端启动报错全面解析:卡顿、下载卡99%、黑屏、崩溃闪退的解决之道
    《鸣潮》作为一款备受期待的游戏,其独特的玩法和精美的画面吸引了大量玩家。然而,不少玩家在尝试体验这款游戏时,遇到了一系列令人头疼的技术问题,包括启动报错、游戏卡顿、下载进度卡在99%、黑屏、崩溃闪退等。这些问题不仅影响了游戏体验,也让玩家感到沮丧。本文将深入分析这些问......
  • 记一次上传图片马无法链接菜刀(蚁剑)的方法解决
    首先原因是因为我在网站后台发现该网站有数据库备份的功能,如下所示于是我们利用上传一个图片马然后将上传链接复制到数据库路径,然后在数据库名称将我们的图片马修改成mm.asp或者xx.asp都行,然后访问链接执行我们的图片马之后成功执行复制地址链接发现报错,这里提一点,你的路......
  • 快排CMS1.2文件上传漏洞
    侵权声明本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系:[[email protected]]。我们将在确......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-55- 上传文件 (非input控件)- 中
    1.简介在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。所以宏哥打算按上传文件的分类对其进行一下讲解和分享。2.上传文件的API(非input控件)Playwright是一个现代化的自动化测试工具,它支持多种浏览器和操作系统,可以帮助开发人员......
  • SpringBoot上传和下载文件
    SpringBoot上传和下载文件创建表DROPTABLEIFEXISTS`file`;CREATETABLE`file`(`id`int(0)NOTNULL,`filename`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNULLDEFAULTNULLCOMMENT'文件名',`path`varchar(255)CHARACTERSE......
  • Java SE 文件上传和文件下载的底层原理
    1.JavaSE文件上传和文件下载的底层原理@目录1.JavaSE文件上传和文件下载的底层原理2.文件上传2.1文件上传应用实例2.2文件上传注意事项和细节3.文件下载3.1文件下载应用实例3.2文件下载注意事项和细节4.总结:5.最后:2.文件上传文件的上传和下载,是常见的功能。......