Php Curl只能读取前2000个字节吗?
我使用了curl和char URL[]=”file:///d:/temporal/prueba1.txt“以便使用硬盘驱动器文件进行测试,以便测试接收到的数据 我有以下问题:Php Curl只能读取前2000个字节吗?,php,c++,c,curl,Php,C++,C,Curl,我使用了curl和char URL[]=”file:///d:/temporal/prueba1.txt“以便使用硬盘驱动器文件进行测试,以便测试接收到的数据 我有以下问题: 跳过大文件中的前2个字符:-已解决-读取数据时出错 我只想读一次(最好是前2000个字符),它是否存在一个curl命令 如果我在writer文件中创建: long longitud=strlen(datain),我得到的longitud比size*nmemb大得多 Curl无法通过公司网络,但URLOpenBlocking
static size_t writer(void *vdata, size_t size, size_t nmemb, void *vbuffer_in){
char *datain=(char *) vdata;
char *buffer_in=(char *) vbuffer_in;
nmemb*=size;//No multiplication needed anymore
//long longitud=strlen(datain);//longitud always larger than nmemb
// Is there anything in the buffer?
if ( (buffer_in != NULL) && (buffer_in[0]=='\0') ) //CAUTION, reads only if buffer is empty!!!
{
//strcat(buffer_in,data); //SIRVE si el fichero es de mas de 16kb OJO!
if (nmemb<(D_BUFFER_SIZE-1))
{
memcpy(buffer_in,datain,nmemb);
buffer_in[nmemb]='\0';//end of string
fprintf(stderr,"\n###SUCCESSFUL, loaded : %li bytes",nmemb);
}
else
{
memcpy(buffer_in,data,D_BUFFER_SIZE);
buffer_in[D_BUFFER_SIZE-1]='\0';//end of string
fprintf(stderr,"\n###WARNING, trying to load %li LARGER THAN %li",nmemb,D_BUFFER_SIZE);
fprintf(stderr," El tamano maximo curl=%li = %likB",CURL_MAX_WRITE_SIZE,CURL_MAX_WRITE_SIZE/1024);
}
return nmemb;
}
return 0; }
静态大小写入程序(void*vdata、size\t size、size\t nmemb、void*vbuffer\u in){
char*datain=(char*)vdata;
char*buffer\u in=(char*)vbuffer\u in;
nmemb*=size;//不再需要乘法
//long longitud=strlen(datain);//longitud始终大于nmemb
//缓冲区里有东西吗?
if((buffer_in!=NULL)&&(buffer_in[0]='\0')//注意,仅当buffer为空时读取!!!
{
//strcat(buffer_in,data);///SIRVE si el fichero es de mas de 16kb OJO!
如果(nmembCURLOPT_)范围允许您请求文件/资源的一部分:
谢谢。我发现curl将ASCII:“0d0a”更改为“0d0d0a”OK!!你说得对,Daniel。如果使用fprintf在文件中写入时在回车前添加0x0d,则会出现问题。因此我必须以二进制模式打开:fopen(“output.txt”,“wb”)
@Daniel Stenberg
static size_t writer(void *vdata, size_t size, size_t nmemb, void *vbuffer_in){
char *datain=(char *) vdata;
char *buffer_in=(char *) vbuffer_in;
nmemb*=size;//No multiplication needed anymore
//long longitud=strlen(datain);//longitud always larger than nmemb
// Is there anything in the buffer?
if ( (buffer_in != NULL) && (buffer_in[0]=='\0') ) //CAUTION, reads only if buffer is empty!!!
{
//strcat(buffer_in,data); //SIRVE si el fichero es de mas de 16kb OJO!
if (nmemb<(D_BUFFER_SIZE-1))
{
memcpy(buffer_in,datain,nmemb);
buffer_in[nmemb]='\0';//end of string
fprintf(stderr,"\n###SUCCESSFUL, loaded : %li bytes",nmemb);
}
else
{
memcpy(buffer_in,data,D_BUFFER_SIZE);
buffer_in[D_BUFFER_SIZE-1]='\0';//end of string
fprintf(stderr,"\n###WARNING, trying to load %li LARGER THAN %li",nmemb,D_BUFFER_SIZE);
fprintf(stderr," El tamano maximo curl=%li = %likB",CURL_MAX_WRITE_SIZE,CURL_MAX_WRITE_SIZE/1024);
}
return nmemb;
}
return 0; }