上传对象回调

使用SDK时可能需要传入各类回调函数以完成您想要实现的相关操作,本文介绍上传对象回调的编写示例。

功能:

  • 进行上传对象操作时的回调函数,用于获取要上传的数据,并将其作为put_object请求的内容发送到服务器。这个回调会重复进行,每次获取下一个数据块以写入服务,直到返回负值或0。

接口定义:

int (S3PutObjectDataCallback)(int bufferSize, char *buffer, void *callbackData);

参数:

参数名 类型 说明
bufferSize int 缓存池的最大字节数
buffer char * 对象内容的缓存池
callbackData void * 发出请求时指定的回调数据

代码示例:

typedef struct put_object_callback_data
{
    FILE *infile;
    uint64_t contentLength;
} put_object_callback_data;

int putObjectDataCallback(int bufferSize, char *buffer,
                                 void *callbackData)
{
     put_object_callback_data *data = (put_object_callback_data *)callbackData;

    int ret = 0;

    if (data->contentLength)
    {
        int toRead = ((data->contentLength > (unsigned)bufferSize) ? (unsigned)bufferSize : data->contentLength);
        ret = fread(buffer, 1, toRead, data->infile);
    }
    data->contentLength -= ret;
    return ret;
}