开发者社区> 问答> 正文

上传文件,奇怪的返回,“打开文件失败”导致上传失败。

上传文件的时候 看到oss sdk里使用的是apr库来进行文件操作的 apr_file_open 和apr_file_info_get   本人对apr库不是太了解  。 有时上传文件的时候返回 CODE=-985,ERRORCODE=OpenFileFail   和 CODE=-983     -983打开文件错误 或者是-985文件信息错误。  但我自己使用windows原生的API CreateFile
是正常打开的 也能获取到文件大小。  求大神解答下   目前发现了好多这个原因导致的上传失败。

展开
收起
莫相离sky 2015-11-10 14:39:54 6287 0
3 条回答
写回答
取消 提交回答
  • Re上传文件,奇怪的返回,“打开文件失败”导致上传失败。
    oss_put_object_from_file
    文件上传失败
      
    res = oss_write_request_body_from_file(options->pool, filename, req);
        if (res != AOSE_OK) {
            aos_file_error_status_set(s, res);
            return s;
        }

    0x01ed8bd0 {code=-983 error_code=0x731fca30 "OpenFileFail" error_msg=0x00000000 <错误的指针> ...}

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

    Re上传文件,奇怪的返回,“打开文件失败”导致上传失败。
    上传时apr_file_info_get执行失败

    int aos_open_file_for_read(aos_pool_t *p, const char *path, aos_file_buf_t *fb)
    {
        int s;
        char buf[256];
        apr_finfo_t finfo;

        if ((s = apr_file_open(&fb->file, path, APR_READ, APR_UREAD | APR_GREAD, p)) != APR_SUCCESS) {
            aos_error_log("apr_file_open failure, code:%d %s.", s, apr_strerror(s, buf, sizeof(buf)));
            assert(fb->file == NULL);
            return AOSE_OPEN_FILE_ERROR;
        }

        // 上传时,这里执行失败
        if ((s = apr_file_info_get(&finfo, APR_FINFO_NORM, fb->file)) != APR_SUCCESS) {
            apr_file_close(fb->file);
            aos_error_log("apr_file_open failure, code:%d %s.", s, apr_strerror(s, buf, sizeof(buf)));
            return AOSE_FILE_INFO_ERROR;
        }
        fb->file_pos = 0;
        fb->file_last = finfo.size;
        fb->owner = 1;

        return AOSE_OK;
    }

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

    Re上传文件,奇怪的返回,“打开文件失败”导致上传失败。
    解决了:
    1、使用最新的SDK
    2、确定本地文件是否存在
    2016-12-09 19:58:13
    赞同 展开评论 打赏
  • 回 1楼yjseu的帖子
    你好,部分文件打开失败,我们这边也是接到客户的反馈,查看入职发现的  code 出错原因就是上述我所说的 CODE=-985,ERRORCODE=OpenFileFail。这个只有在部分电脑上出现 非必现的
    2015-11-10 19:27:46
    赞同 展开评论 打赏
  • 你好,是否可以提供一下打开文件失败的具体原因,如果打开失败,默认会输出具体失败的原因,比如:apr_file_open failure, code:出错原因。另外问一下,这个是所有文件都打开失败还是部分文件打开失败?

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

    回 2楼(莫相离sky) 的帖子
    应该还有更详细的信息的,打开文件失败会输出:apr_file_open failure, code:出错原因,其中出错原因是Apr库的出错吗,你贴的是oss c sdk的错误码。另外是否可以找出出错文件的规律,方便我们定位问题
    2015-11-10 17:04:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载