开发者社区> 问答> 正文

CSDK的文档里面给的错误响应怎么跟代码对应?

都是英文名称的,代码里又没有定义,全是code,怎么对应起来??
200是OK在哪里定义的?文档里哪里说明的?




初始化


初始化一个分块上传事件aos_pool_t *p; int is_oss_domain = 1; //是否使用三级域名,可通过is_oss_domain函数初始化oss_request_options_t * oss_request_options;aos_status_t *s;aos_table_t * headers;aos_table_t *resp_headers;aos_string_t bucket;aos_string_t object; char *bucket_name =   "<your bucket name>"; char * object_name =   "<your object name>";aos_string_t upload_id;aos_pool_create(&p, NULL); // init_ oss_request_options…aos_str_set(&bucket, bucket_name);aos_str_set(&object,object_name);headers = aos_table_make(p, 0);resp_headers = aos_table_make(p, 0);s = aos_status_create(p);s = oss_init_multipart_upload (oss_request_options, &bucket, &object, headers, &upload_id, aos_pool_destroy(p);


不觉得multipart_upload后面少点啥吗?


C文档做的太不认真了!

//----------------------------------------------
在头文件里找到一点线索
extern const char AOS_XML_PARSE_ERROR_CODE[];
extern const char AOS_OPEN_FILE_ERROR_CODE[];
extern const char AOS_HTTP_IO_ERROR_CODE[];
extern const char AOS_UNKNOWN_ERROR_CODE[];
extern const char AOS_CLIENT_ERROR_CODE[];
extern const char AOS_UTF8_ENCODE_ERROR_CODE[];
但是没有找到定义。

展开
收起
shotedit 2015-10-26 09:53:12 7695 0
2 条回答
写回答
取消 提交回答
  • 回 1楼(shotedit) 的帖子
    你说的200准确应该是http status,对于curl的错误返回时有可能是一个负数,这在aos_define.h中是可以看到的,比如-992,AOSE_CONNECTION_FAILED = -992,表示建立http连接失败。对于error_code一般是给出一个错误类型,至于具体的错误信息则是在error msg里面给出的。举个例子,由于权限问题,请求可能返回403,error_code提示AccessDenied,error_msg中会进一步说明AccessDenied的原因,有可能是access key和access id不对,也有可能是系统不对等

    -------------------------

    回 楼主(shotedit) 的帖子
    文档中指出的那个错误我们会及时修改掉,我们同学在输入的时候可能遗漏了,不好意思给您造成困惑

    -------------------------

    回 楼主(shotedit) 的帖子
    另外,常用的error_code含义在文档的最后有说明, https://docs.aliyun.com/?spm=5176.383663.9.10.baDLsC#/pub/oss/sdk/c-sdk&exception, 具体错误信息还是要看error_msg的

    -------------------------

    回 5楼(shotedit) 的帖子
    这个情况是否可以重现,如果可以的话,打出req_id,请开发同学帮忙看一下

    -------------------------

    回 9楼(shotedit) 的帖子
    你的场景下首先可以获得bucket中所有没有complete的upload_id以及相应的object,这个接口是oss_list_multipart_upload,当然会有一种情况,你有可能一个object下面会启动多次upload,也就是会有多个upload_id,这个情况是得你自己判断到底是哪一个upload_id,一个好的办法是同一个object只有一个人使用MPU上传,这样也可以避免并发覆盖问题。

    -------------------------

    按照上面的方法确定续传的upload_id和object以后,就可以指定文件进行继续上传了。对了,您使用MPU时每个part是并发上传的,还是单线程?

    -------------------------

    回 7楼(shotedit) 的帖子
    删除multipart c sdk中是有接口的,oss_abort_multipart_upload这个接口可以删除指定object的upload_id下面的碎片

    -------------------------

    回 15楼(shotedit) 的帖子
    MPU时除了最后一个分片,其他分片必须大于100KB

    -------------------------

    回 13楼(shotedit) 的帖子
    恩,这个要看使用场景,我理解如果是客户端,一般使用c sdk的场景很多是嵌入式,这时使用多线程实际上没有太大意义,毕竟网络就那样,如果是服务器端的话就可以玩一些花样。我们有一些想法,想提供一些易用的接口,比如帮用户把MP上传文件封装掉,用户只需要指定上传文件名和每个分片的大小等信息,sdk自动处理MP的一些细节,这样更方便用户。

    -------------------------

    回 14楼(shotedit) 的帖子
    这个我们也在考虑改进,控制台那边也有用户提供类似需求,控制台的同学已经考虑这件事情了

    -------------------------

    回 15楼(shotedit) 的帖子
    分片太小在complete的时候会报400,你说的302应该不是一回事

    -------------------------

    可以参考一下oss api文档: https://docs.aliyun.com/?spm=5176.383663.9.3.KEN7Ty#/pub/oss/api-reference/multipart-upload&AbortMultipartUpload , abort时候是返回204的

    -------------------------

    回 24楼(shotedit) 的帖子
    不会,只要你的是utf8编码,你开一下open file的具体原因,默认是输出到屏幕的,你可以考虑重定向日志

    -------------------------

    回 27楼(shotedit) 的帖子
    看一下您使用的编码方式,windows上有可能使用的是GBK2312编码方式,如果是GBK2312的话需要您自己进行utf8编码
    2015-10-26 13:06:03
    赞同 展开评论 打赏
  • ReCSDK的文档里面给的错误响应怎么跟代码对应?
    找到了,竟然在error_code 而不是error_msg.....

    -------------------------

    回4楼yjseu的帖子
    正好碰到官方团队,还有一个问题,我在oss_list_upload_part的时候返回了302,URL暂时性转移 是什么参数造成的

    -------------------------

    回6楼yjseu的帖子
    UploadID    39017AD75DC54B7B9C1F5912C6FB5CAD
    UserID        UH6Z3PIQeLyACIu2
    object name    test.mp3
    bucket         se-test

    另外,web管理端没法批量删除multipart的碎片?只能一个一个点吗...

    -------------------------

    回6楼yjseu的帖子
    请问能获得QQ或者电话支持吗~ 在线等 挺急的...

    -------------------------

    回7楼shotedit的帖子
    对于multipart upload(以下简称MPU)还有几点疑问

    比如有C:\A.ZIP,用MPU方式上传到testbucket,objectname为obj_a.zip,分成100 parts,
    某次上传了前50个parts,

    问题1: 如果对这50个parts做了complete操作,就会产生一个只有一半大小的obj_a.zip object,这显然对于下载端来说不太合适,所以如果我需要断点续传,就需要保留这50个parts作为碎片,那么就有问题2

    问题2: 我有办法获得我这个bucket下所有MPU所产生的碎片吗(不通过UPLOADID)?如果可以获得,那么我可以匹配UPLOADID,对这些碎片进行断点续传,那么获得的信息里有本地文件的信息吗?我如何找到这个UPLOADID真正对应的本地文件?以及part信息(completedpartindexs,partcount, partsize, filesize等)?

    问题3: 由于考虑到不同terminal上传,如果每台机器都检查mpu碎片,那么就会造成混乱,所以暂且猜测是不支持获得所有碎片的,所以我必须在本地有自己的记录,uplooadid和对应的文件,以及part信息(completedpartindexs,partcount, partsize, filesize等),是这样的吗?

    -------------------------

    回 11楼yjseu的帖子
    目前是单线程,不过模块是按照多线程做的

    对于MPU,多线程会对速度有提升吗?我是感觉国内ISP给提供的上传带宽也就那么多,线程再多也没法扩展带宽,还不如单线程来的方便

    -------------------------

    回 12楼yjseu的帖子
    呃 好吧...只能写代码去删?我是在WEB管理页面看到好多碎片,想删掉就只能一个一个点....

    -------------------------

    回 12楼yjseu的帖子
    对了 MPU对文件大小有限制吧? 我测试的时候用的2MB的文件,list upload part就是302....但是之前我记得用2MB文件是在complete的过程,返回了类似file too small这个意思的错误码. 这个302有点匪夷所思.

    -------------------------

    回 19楼yjseu的帖子
    又遇到奇怪问题了.abort的时候返回204....
    ID 8215494A615342DEA9B8ADEA99E4B0B5
    求官方大哥帮忙...

    -------------------------

    回 19楼yjseu的帖子
    经过WEB端查看,发现abort返回204也成功的abort了....

    -------------------------

    回 22楼yjseu的帖子
    好吧...=.=

    -------------------------

    回 22楼yjseu的帖子
    MPU是否要求本地文件路径以及OBJECTNAME都没有中文?

    本地文件路径有中文会有-985(openfilefailed)
    objectname有中文会在init mpu的时候返回400 unknown error

    -------------------------

    回 25楼yjseu的帖子
    C SDK里面结构给的不都是multibyte?我是特意转成ansii再拷贝进去的

    -------------------------

    回 25楼yjseu的帖子
    哈喽...在线等=.=

    -------------------------

    回 28楼yjseu的帖子
    嗯嗯 好用了

    还有个问题,一个instance内,如果我有线程在操作,比如在uploadpart,那我另一个线程可以调用oss函数吗?

    我这遇到个问题:
    上传线程在upload,界面响应到要abort另一个任务(不是upload的那个),但是abort就返回-980
    2015-10-26 10:20:11
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
F2etest — 多浏览器兼容性测试整体解决方案 立即下载
函数计算最佳实践:快速开发一个分布式 Puppeteer 网页截图服务 立即下载