アリクラウドOSSに画像をアップロード

次のコードを前に、バケツ、accessKeyId、accessKeySecret、およびドメインのエンドポイントを知っておく必要があります。

 

 

pom.xml:

<! -アリのクラウドストレージ- > 
<依存>
<groupIdを> com.aliyun.oss </ groupIdを>
<たartifactId> aliyun-SDK-OSS </たartifactId>
<バージョン> 3.5.0 </バージョン>
</依存関係>


アリの雲の設定:
静的ClientBuilderConfiguration initConfプライベート(){ 
// ClientConfigurationを作成します。ClientConfigurationプロキシ、接続タイムアウトパラメータ、接続の最大数などを設定するために、OSSClient構成クラスです。
=新しい新しいClientBuilderConfigurationのconf ClientBuilderConfiguration();

オープン接続のHTTPの//セットOSSClient最大数は、デフォルトは1024です。
conf.setMaxConnections(CONF_MAX_CONNECTIONS);
//データを送信するために、タイムアウトソケットレイヤを設定し、デフォルトは50,000ミリ秒です。
conf.setSocketTimeout(CONF_SOCKET_TIMEOUT);
//接続を確立するタイムアウトを設定し、デフォルトは50,000ミリ秒です。
conf.setConnectionTimeout(CONF_CONNECTION_TIMEOUT);
//接続プールから設定接続時間を取得(単位:ミリ秒)、無デフォルトのタイムアウトを。
conf.setConnectionRequestTimeout(CONF_CONNECTION_REQUEST_TIMEOUT);
//は、アイドルタイムアウトを設定します。接続がクローズされ、有効期限、デフォルトは60,000ミリ秒です。
conf.setIdleConnectionTime(CONF_IDLE_CONNECTION_TIME)。
//再試行が失敗し、要求を設定し、デフォルトは3回です。
conf.setMaxErrorRetry(CONF_MAX_ERROR_RETRY);
//セットがデフォルトでサポートされているエンドポイントとしてカスタムドメイン名をサポートしています。
conf.setSupportCname(真の);
//有効化または無効化アクセス方法セカンダリドメイン名、デフォルトが開いていません。
(falseに)conf.setSLDEnabled;
// OSSを使用しているプロトコル(HTTP / HTTPS)接続を設定し、デフォルトはHTTPです。
conf.setProtocol(Protocol.HTTP);

CONFを返します;
}

初期化:
/ ** OSSClient实例* / 
プライベート静的揮発性OSS ossClient。

/ **双重锁单例* /
プライベート静的OSS getOssClient(){
IF(ossClient == NULL){
同期(OSS.class){
IF(ossClient == NULL){
ClientBuilderConfiguration CONF = initConf()。
ossClient =新しいOSSClientBuilder()構築(OSS_ENDPOINT、OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET、CONF)。
         //程序退出关闭ossClient
。Runtime.getRuntime()addShutdownHook(新しいThread(() - > ossClient.shutdown()));
            } 
}
}
戻りossClient;
}


アップロード:
//ファイルアップロード
ossClient.putObject(OSS_BUCKET_NAME、objectNameに、INPUT、objectMetadataを);
//アップロードURLの取得
戻りgetImgUrl(OSS_ENDPOINT、OSS_BUCKET_NAME、objectNameにします)。

プライベート静的最後の文字列PRE_URL =「https://で」。
プライベート静的最終文字列FILE_SEPARATOR =「/」;
プライベート静的最終文字列NAME_SEPARATOR =「_」;
プライベート静的最後の文字列FILE_POINT =「」;

公共の静的な文字列getImgUrl(文字列エンドポイント、文字bucketName、文字列のobjectName){
StringBufferのSB =新規のStringBuffer();
sb.append(PRE_URL)。
sb.append(bucketName)。
sb.append(endpoint.replace(PRE_URL、FILE_POINT))。
sb.append(FILE_SEPARATOR)。
sb.append(objectNameの)。
sb.toStringを返します();
}




あなたがアップロードの過程で発生した場合:
<エラー>
<CODE> SecondLevelDomainForbidden </ CODE>
あなたはTHIRDでなければなりませんアクセスしようとしているバケツで、使用してOSSレベルドメイン</メッセージ>に対処し、<メッセージ>
<RequestId> 5D8340FA530E23C38F6FB369 </ RequestId >
<HOSTID> oss-cn-beijing.aliyuncs.com </ HOSTID>
</エラー>

オンラインアプローチです:エンドポイントはバケット+ドメイン名のファッションに設定されています。http://bucket-name.oss-cn-hangzhou.aliyuncs .COM /オブジェクト

 しかし、新しい問題が存在します。

<エラー>
<CODE> SignatureDoesNotMatch </ CODE>
<メッセージ>私たちは、あなたが提供する署名と一致しない計算要求署名。あなたの鍵と署名の方法を確認してください。</メッセージ>
<RequestId> 5D8341C13EF51E45DBC0B383 </ RequestId>
<HOSTID> mgtv-cms-img.oss-cn-beijing.aliyuncs.com </ HOSTID>
<OSSAccessKeyId> LTAI4FifYXAfMeWmiwpXWiKv </ OSSAccessKeyId>
< SignatureProvided> QMy + ho20jDfI2KrEBaYAiBlC5aA = </ SignatureProvided>



解決策:以下の設定をfalseに設定することができます
//アクセス方法セカンダリドメイン名を有効または無効にするには、デフォルトでは開いていません。
conf.setSLDEnabled(偽);

おすすめ

転載: www.cnblogs.com/jylsgup/p/11565753.html
おすすめ