顯示具有 object 標籤的文章。 顯示所有文章
顯示具有 object 標籤的文章。 顯示所有文章

2017年5月21日 星期日

[PHP] 使用 AWS SDK 進行 S3 檔案上傳

寫過又忘了,筆記一下,環境是 PHP 5.5.9:

<?php
require 'aws.phar'; // http://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.phar //aws-3.27.5.phar
$s3 = Aws\S3\S3Client::factory(array(
'region' => 'us-west-2',
// http://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html
'version' => '2006-03-01',
'credentials' => array(
'key' => 'key',
'secret' => 'secret',
),
        ));

try {
$result = $s3->putObject(array(
'Bucket' => 'my-bucket',
'Key' => 'my-object-key'
'SourceFile' => $_FILES['userfile']['tmp_name'],
        ));
} catch (Exception $e) {
             
echo $e->getMessage() . "\n";
}

print_r($result);
// $result['ObjectURL'];


Aws\Result Object
(
    [data:Aws\Result:private] => Array
        (
            [Expiration] =>
            [ETag] =>
            [ServerSideEncryption] =>
            [VersionId] =>
            [SSECustomerAlgorithm] =>
            [SSECustomerKeyMD5] =>
            [SSEKMSKeyId] =>
            [RequestCharged] =>
            [@metadata] => Array
                (
                    [statusCode] => 200
                    [effectiveUri] => https://s3-us-west-2.amazonaws.com/my-bucket/my-object-key
                    [headers] => Array
                        (
                            [x-amz-id-2] =>
                            [x-amz-request-id] =>
                            [date] =>
                            [etag] =>
                            [content-length] => 0
                            [server] => AmazonS3
                        )

                    [transferStats] => Array
                        (
                            [http] => Array
                                (
                                    [0] => Array
                                        (
                                        )

                                )

                        )

                )

            [ObjectURL] => https://s3-us-west-2.amazonaws.com/my-bucket/my-object-key
        )

)

2016年3月4日 星期五

Android 開發筆記 - 使用 Android NDK / JNI 回傳 HashMap 物件至 Java 端

C/C++ Code:

#include <jni.h>

extern "C" {

jobject Java_YourPackageName_getHashMap(JNIEnv *env, jobject thiz) {

    jclass mapClass = env->FindClass("java/util/HashMap");
    jmethodID obj_init = env->GetMethodID(mapClass, "<init>", "(I)V");
    jmethodID obj_put = env->GetMethodID(mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    jobject hashMap = env->NewObject(mapClass, obj_init, 1);

    /*
    const char * input_data = "HelloWorld";
    int input_data_length = strlen(input_data);

    jbyteArray data = env->NewByteArray(input_data_length);
    env->SetByteArrayRegion(data, 0, input_data_length, (const jbyte *)input_data);
    env->CallObjectMethod(hashMap, obj_put, (jbyteArray)data, (jbyteArray)data);
    env->DeleteLocalRef(data);
    */
    jstring key = env->NewStringUTF("Hello");
    jstring value = env->NewStringUTF("World");
    env->CallObjectMethod(hashMap, obj_put, key, value);
    env->DeleteLocalRef(key);
    env->DeleteLocalRef(value);

    //env->DeleteLocalRef(hashMap);
    return hashMap;
}

}


Android Java code:

public native HashMap getHashMap();
static {
        System.loadLibrary("native");
}

void usage() {
HashMap<String, String> mHashMap = getHashMap();

        Log.d(tag, "HashMap size: "+mHashMap.size());
        Log.d(tag, "HashMap data with key(Hello): "+mHashMap.get("Hello"));
        Iterator it = mHashMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            Log.d(tag, "HashMap key: ["+pair.getKey()+"], value: ["+pair.getValue().toString()+"]");
        }
}