简单上传

本SDK提供ufile_put_file方法用于上传本地小文件到US3的一个存储空间中,大文件(1G以上)请使用分片上传,完整代码详见 Github

ufile_put_file调用的 US3 API 为PutFile, 具体参见PutFile API 文档

方法原型

1
struct ufile_error ufile_put_file(const char* bucket_name, const char *key, const char *mime_type, FILE *file)

参数说明

  • bucket_name: 文件上传后所在的存储空间
  • key: 文件上传后在存储空间里的名称
  • mime_type: 文件上传后的类型,可为空
  • file: 待上传的文件句柄

示例

执行该示例请先配置UFILE_*相关环境变量并赋予bucket_namekeyfile_pathmime_type有效值。

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
#include "../lib/api.h"
#include <stdio.h>
#include <stdlib.h>

const char* bucket_name = "your bucket name";
const char* key = "your file key";
const char* file_path = "your local file to be uploaded";
const char* mime_type = "your file type";

int main(int argc, char *argv[]){
    // 读取配置初始化SDK
    struct ufile_config cfg;
    cfg.public_key = getenv("UFILE_PUBLIC_KEY");
    cfg.private_key = getenv("UFILE_PRIVATE_KEY");
    cfg.bucket_host = getenv("UFILE_BUCKET_HOST");
    cfg.file_host = getenv("UFILE_FILE_HOST");
    struct ufile_error error;
    error = ufile_sdk_initialize(cfg, 0);
    if(UFILE_HAS_ERROR(error.code)){
        printf("初始化 sdk 失败,错误信息为:%s\n", error.message);
        return 1;
    }

    // 调用 ufile_put_file 上传文件
    FILE *fp = fopen(file_path, "rb");
    if (fp == NULL){
        fprintf(stderr, "打开文件失败, 错误信息为: %s\n", strerror(errno));
        return 1;
    }
    error = ufile_put_file(bucket_name, key, mime_type, fp);
    if UFILE_HAS_ERROR(error.code) {
        printf("调用 ufile_put_file 失败,错误信息为:%s\n", error.message);
    }
    fclose(fp);
	// 释放初始化SDK时分配的内存
    ufile_sdk_cleanup();
    return 0;
}