注:源码中的bucket,accesskey和secratkey参数均为正确值。
源码如下:
char* CQiniu_testDlg::GetUploadToken(const char* bucket, const char* accesskey, const char* secretkey)
{
Qiniu_Mac mac;
mac.accessKey = accesskey;
mac.secretKey = secretkey;
Qiniu_RS_PutPolicy putPolicy;
Qiniu_Zero(putPolicy);
putPolicy.scope = bucket;
return Qiniu_RS_PutPolicy_Token(&putPolicy, &mac);
}
bool CQiniu_testDlg::RSUploadScreenShot(const char* bucket, const char* uptoken, const char* key, const char* filename)
{
Qiniu_Io_PutRet putRet;
Qiniu_Zero(putRet);
Qiniu_Rio_PutExtra putExtra;
Qiniu_Zero(putExtra);
putExtra.bucket = bucket;
Qiniu_Client client;
Qiniu_Client_InitNoAuth(&client, 1024);
bool bRet = false;
Qiniu_Error err = Qiniu_Rio_PutFile(&client, &putRet, uptoken, key, filename, &putExtra);
if(err.code == 200)
{
OutputDebugStringA("上传截图成功");
bRet = true;
}
else
{
char szErr[512] = {0};
sprintf(szErr, "上传截图失败!错误号:%d,描述:%s", err.code, err.message);
OutputDebugStringA(szErr);
}
Qiniu_Client_Cleanup(&client);
return bRet;
}
DWORD CQiniu_testDlg::ThreadUpdateImage(LPVOID lpParam)
{
CQiniu_testDlg* pDlg = (CQiniu_testDlg*)lpParam;
char* uptoken = pDlg->GetUploadToken("bucket", "ak", "sk");
if(pDlg->RSUploadScreenShot("bucket", uptoken, "demo", "d:\\demo.bmp"))
{
char* pszKey = new char[10];
memset(pszKey, 0, 10);
strcpy(pszKey, "demo");
pDlg->PostMessage(WM_UPLOAD_SCREENSHOT_RESULT, (WPARAM)pszKey, (LPARAM)0);
}
Qiniu_Free(uptoken);
return 0;
}
你的
char* uptoken = pDlg->GetUploadToken("bucket", "ak", "sk");
是否设置正确,另外能否提供一下上传请求中的扩展字段X-Reqid
。