をS3StatusConnectionFailed。誰かがこの状況がどのように起こるかを教えてくれますか?これはS3にファイルをアップロードする機能です。libs3は、私がここで見つけるlibs3ライブラリを使用してファイルのアップロードを行うことに取り組んでいます
int putFileIntoS3 (char *fileName, char *s3ObjName) {
S3Status status;
char *key;
struct stat statBuf;
uint64_t fileSize;
FILE *fd;
char *accessKeyId;
char *secretAccessKey;
put_object_callback_data data;
accessKeyId = S3_ACCESS_KEY;
secretAccessKey = S3_SECRET_ACCESS_KEY;
key = (char*) strchr(s3ObjName, '/');
if (key == NULL) {
printf("S3 Key not defined!!!!");
return (-1);
}
*key = '\0';
key++;
if (stat(fileName, &statBuf) == -1) {
printf("Unknown input file");
return(-1);
}
fileSize = statBuf.st_size;
fd = fopen(fileName, "r");
if (fd == NULL) {
printf("Unable to open input file");
return(-1);
}
data.infile = fd;
S3BucketContext bucketContext =
{s3ObjName, S3ProtocolHTTP, S3UriStylePath, accessKeyId, secretAccessKey}
S3PutObjectHandler putObjectHandler = {
{ &responsePropertiesCallback, &responseCompleteCallback },
&putObjectDataCallback
};
if ((status = S3_initialize("s3", S3_INIT_ALL)) != S3StatusOK) {
printf("Failed to initialize libs3: %s\n",S3_get_status_name(status));
return(-1);
}
S3_put_object(&bucketContext, key, fileSize, NULL, 0, &putObjectHandler, &data);
if (statusG != S3StatusOK) {
printf("Put failed: %i\n", statusG);
S3_deinitialize();
return(-1);
}
S3_deinitialize();
fclose(fd);
return(0);
}
私は戻って、「失敗したPUT:46」を取得私はかなり確信している、それはS3StatusConnectionFailed誤りだということを意味します。
どんな助けがあればいいですか、あるいはC++でこれをやっている厄介なものの代わりに使うことができるbotoのようなライブラリへのポインタです。
ありがとうございます!
これは実際にはCではなく、C++です:) –
私はupload.cppに保存していますが、g ++をコンパイラとして使用しています...これはまだ動作するという印象を受けました。 –
はい、C++から呼び出すことができますcuz libs3.hはg ++に名前を変更しないように頼んでいます(libs3.hのextern "C"構文)。 – Viren