-
Notifications
You must be signed in to change notification settings - Fork 2
/
mput.c
61 lines (56 loc) · 1.93 KB
/
mput.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "../lib/api.h"
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main(int argc, char *argv[]){
if(argc < 2){
printf("请输入一个文件路径!!!!");
exit(1);
}
struct ufile_config cfg;
cfg.public_key = getenv("UFILE_PUBLIC_KEY");
cfg.private_key = getenv("UFILE_PRIVATE_KEY");
cfg.bucket_host = "api.ucloud.cn";
cfg.file_host = "cn-bj.ufileos.com";
printf("正在初始化 SDK ......\n");
struct ufile_error error;
error = ufile_sdk_initialize(cfg, 0);
if(UFILE_HAS_ERROR(error.code)){
ufile_sdk_cleanup();
printf("初始化 sdk 失败,错误信息为:%s\n", error.message);
return 1;
}
printf("调用 (mput)分片 上传文件.....\n");
struct ufile_mutipart_state state;
error = ufile_multiple_upload_init(&state, "echotest2", "multiple_upload", "");
if(UFILE_HAS_ERROR(error.code)){
ufile_sdk_cleanup();
printf("调用 ufile_multiple_upload_init 失败,错误信息为:%d, %s\n", error.code, error.message);
return 1;
}
FILE *fp = fopen(argv[1], "rb");
char *buf = malloc(state.part_size);
int i;
for(i=0; ; i++){
size_t nc = fread(buf, 1, state.part_size, fp);
if(nc == 0){
break;
}
error = ufile_multiple_upload_part(&state, buf, nc, i);
if(UFILE_HAS_ERROR(error.code)){
printf("调用 ufile_multiple_upload_part 失败,错误信息为:%d, %s\n", error.code, error.message);
ufile_multiple_upload_abort(&state);
ufile_sdk_cleanup();
return 1;
}
}
error = ufile_multiple_upload_finish(&state);
if(UFILE_HAS_ERROR(error.code)){
printf("调用 ufile_multiple_upload_part 失败,错误信息为:%s\n", error.message);
}else{
printf("调用 (mput)分片上传成功\n");
}
ufile_sdk_cleanup();
return 0;
}