oss圖上傳
❶ vue3 oss - sdk 上傳圖片
一、操作步驟
3.使用,並上傳:
❷ 有誰使用過阿里雲oss的嗎多文件多圖時怎麼上傳
前段時間正好做個項目,就是用的oss,普通上傳和斷點續傳,代碼貼出來,看是不是你需要的public class OssManage {public static String ACCESS_KEY_ID = null;public static String ACCESS_KEY_SECRET = null;public static String ENDPOINT = null;public static String BUCKETNAME = null;public static String BUCKETNAME_VIDEO = null;public static String OUT_OF_DATE = null;private OSSClient client = null;private ObjectMetadata meta = null;static{try {ACCESS_KEY_ID = SysConst.getProperty("OSS_ACCESS_KEY_ID");ACCESS_KEY_SECRET = SysConst.getProperty("OSS_ACCESS_KEY_SECRET");ENDPOINT = SysConst.getProperty("OSS_ENDPOINT"); BUCKETNAME = SysConst.getProperty("OSS_BUCKETNAME"); BUCKETNAME_VIDEO = SysConst.getProperty("OSS_BUCKETNAME_VIDEO"); OUT_OF_DATE = SysConst.getProperty("OSS_OUT_OF_DATE");} catch (java.lang.Exception e) {e.printStackTrace();}}public void init(){ // 初始化一個OSSClient client = new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET); meta = new ObjectMetadata();}/** * @Description: 上傳文件到OSS文件伺服器 * @param content 文件流 * @param key 上傳為OSS文件伺服器的唯一標識 * @param mimeType 文檔類型 * @throws Exception * @ReturnType:String OSSObject的ETag值。*/public String uploadFile(InputStream content,String key,String mimeType) throws Exception{//進行初始化init(); // 必須設置ContentLength meta.setContentType(mimeType); // 上傳Object. LogUtil.printConsoleLog("*****************上傳圖片到oss伺服器開始*****************" + key); PutObjectResult result = client.putObject(BUCKETNAME, key, content, meta); LogUtil.printConsoleLog("*****************上傳圖片到oss伺服器結束*****************" + key); return result.getETag();}/** * @Description: 根據key獲取oss伺服器上的圖片地址 * @param key * @return * @ReturnType:String*/public String getImgURl(String key){init();Date expires = new Date (new Date().getTime() + Integer.parseInt(OUT_OF_DATE)); // 30 minute to generatePresignedUrlRequest ;if(key.startsWith("msplatform")){generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);}else {generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);}generatePresignedUrlRequest.setExpiration(expires);URL url = client.generatePresignedUrl(generatePresignedUrlRequest);return url.toString();}/** * @Description:根據key獲取oss伺服器上的ipa文件地址 * @param key * @return * @ReturnType:String */public String getIpaURl(String key){init();Date expires = new Date(new Date().getTime()+ 10*365*24*3600*1000);GeneratePresignedUrlRequest generatePresignedUrlRequest ;if(key.startsWith("msplatform")){generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);}else {generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);}generatePresignedUrlRequest.setExpiration(expires);URL url = client.generatePresignedUrl(generatePresignedUrlRequest);return url.toString();}/** * @Description: 根據key獲取oss伺服器上的圖片地址 * @param key * @return * @ReturnType:String*/public InputStream getObject(String key){init();OSSObject object = null;if(key.startsWith("msplatform")){object= client.getObject(BUCKETNAME, key);}else{object= client.getObject(BUCKETNAME_VIDEO, key);}object.getObjectMetadata().getContentType();// 獲取Object的輸入流InputStream objectContent = object.getObjectContent();return objectContent;}/** * @Description:刪除文件 * @param key OSS文件伺服器上文件的唯一標識 * @ReturnType:void*/public void deleteFile(String key){init();client.deleteObject(BUCKETNAME, key);}/** * @Description: 斷點上傳文件到OSS文件伺服器 * @param content 文件流 * @param key 上傳為OSS文件伺服器的唯一標識 * @param position 位置*/public String appendObjectFile(InputStream content,String key,int position,String mimeType) throws Exception{ //進行初始化 init(); // 必須設置ContentLength meta.setContentLength(position); meta.setContentType(mimeType); meta.setCacheControl("no-cache"); meta.setContentEncoding("utf-8"); // 上傳 LogUtil.printConsoleLog("*****************斷點上傳圖片到oss伺服器開始*****************" + key); AppendObjectRequest appendObjectRequest = new AppendObjectRequest(BUCKETNAME, key, content, meta); appendObjectRequest.setPosition(Long.valueOf(position)); AppendObjectResult appendObjectResult =client.appendObject(appendObjectRequest); LogUtil.printConsoleLog("*****************斷點上傳圖片到oss伺服器結束*****************" + key); return appendObjectResult.getNextPosition().toString();}public static void main(String[] args) {OssManage ossManage = new OssManage();}}
❸ OSS 上傳圖片錯誤碼 403
使用OSS上傳圖片到阿里雲時,報姿態悶錯誤碼403,提示:The OSS Access Key Id you provided does not exist in our records.,
官方給出的閉宏排查結果是:AccessKeyID禁用或不存在,但是登錄阿里雲控制台 AccessKey 管理 發現AccessKeyID正確,並啟用著狀態.以為是AccessKeyID與解析視頻是兩個ID,試了還是報403.所以並不是AccessKeyID的問題,那就是KeySecret或者token的問題.
最終換了一個解決思路,不使用OSSStsTokenCredentialProvider創建OSSCredentialProvider,使用的- (instancetype)initWithPlainTextAccessKey:(NSString *)accessKey secretKey:(NSString *)secretKey __attribute__((deprecated("We recommend the STS authentication mode on mobile")));方法來創建OSSCredentialProvider,這樣就避免了token錯誤的問題,果然跡彎,用了這個方法圖片上傳成功了.
希望能幫到遇到這個問題的童鞋們.
❹ Android圖片上傳到阿里雲OSS小案例
1.在管理控制台找到OOS並開通
2.點擊存儲空間,創建bucket
1、 Android SDK開發包
Android Studio方式(推薦) Maven依賴
2、許可權設置
在 AndroidManifest.xml 文件中已經配置了這些許可權,否則,SDK 將無法正常工作。
3.混淆設置
修改 項目名app[proguard-rules.pro ]路徑下的proguard-rules.pro文件
4.寫工具類
(1)首先要有4個數據
END_POINT 、BUCKET_NAME 、Access Key ID、Access Key Secret
創建你的Access Key 然後將需要的值復制粘貼到工具類對應位置
(2)寫工具類,UploadHelper
(按鈕點擊上傳一張圖片,因為測試,我就把圖片路徑寫死了)
1、寫一個leyout
2.對應的Java類
3、結果驗證
看到如上結果,那恭喜你大功告成了。
[ps]有的人可能有個地方會報錯,當然不能原原本本的抄了
這里要換成你自己的全局Application Content,
另外,一個HashUtil.java
本文鏈接: https://blog.csdn.net/qq_37971615/article/details/81975465
❺ iOS阿里雲OSS上傳多張圖片和視頻
1.從伺服器獲取上傳需要的 accessKeyId, accessKeySecret, securityToken;如果你們是本地直接配置,不需要從伺服器拿直接省略。
2.配置OSSTask
3.1 上傳圖片
3.2 上傳視頻
❻ oss 圖片處理
圖片處理文章鏈接
使用:
原始圖片上傳到OSS後 ,可以通過簡單的RESTful介面,在任何時間、任何地點、任何互聯網設備上對圖片進行處理。
( 介面正常上傳圖片 返回oss圖片之後 再對圖片進行處理)
>>>介面上傳oss照片
1.獲取oss相關參數
/api/admin/vendor/uploadToken?path=images/
2.上傳圖片file到oss
http://zhuoyou-shop-test.oss-cn-hangzhou.aliyuncs.com/
3.拼接圖片地址:
圖片地址 = host(介面1返回的)+dir(介面1返回的)+file.name
eg:......
https://zhuoyou-shop-test.oss-cn-hangzhou.aliyuncs.com/images/4.jpg
>>>>>> 圖片處理 使用方式有好幾種:
>匿名訪問(通過添加處理參數對圖片進行處理)
通過如下格式的三級域名匿名訪問處理後的圖片:
http://.......?x-oss-process=image/<yourAction>,<yourParamValue>
>授權訪問 eg:
let OSS =require('ali-oss');
let client =new OSS({accessKeyId:'',accessKeySecret:'',bucket:'',endpoint:''});
let signUrl = client.signatureUrl('example.jpg', {expires:600,'process':'image/resize,w_300'});
過期時間10分鍾, 圖片處理式樣"image/resize,w_300"
>SDK訪問 eg:
let OSS =require('ali-oss');
.......
縮放 client.signatureUrl('example.jpg', {expires:3600,process:'image/resize,m_fixed,w_100,h_100'})
圖片處理功能也很多:
獲取圖片信息 , 圖片格式轉換 , 圖片縮放 , 圖片裁剪 , 圖片旋轉 , 圖片效果 , 圖片水印 , 自定義圖片處理樣式 , 級聯處理
以下都用的是第一種方式 匿名訪問 方式處理圖片:http://.......?x-oss-process=image/xx,xx
有各悉棚毀個圖片操作指南地址
指南地址
1.圖片水印介紹
介紹地址
水印參數和塌:睜備 watermark
t 可選參數,指定水印的透明度。
g 可選參數,指定水印在圖片中的位置,[nw,north,ne,west,center,east,sw,south,se]
x 可選參數,指定水印的水平邊距, 即距離圖片邊緣的水平距離。水印位置是左上、左中、左下、右上、右中、右下
y 可選參數,指定水印的垂直邊距,即距離圖片邊緣的垂直距離, 水印位置是左上、中上、右上、左下、中下、右下
voffset 可選參數,指定水印的中線垂直偏移。水印位置在左中、中部、右中時,可以指定水印位置根據中線往上或者往下偏移
圖片水印參數:image
文字水印參數:
text必選參數 ,指定文字水印的文字內容。參數值為文字內容進行Base64編碼後的字元串。
(文字水印內容必須是通過以下方法進行Base64編碼後的字元串 最大長度為64個字元(即支持漢字最多20個左右)。)
type 可選參數,指定文字水印的文字類型。
默認值:wqy-zenhei( 編碼後的值:d3F5LXplbmhlaQ)
color 可選參數,指定文字水印的文字顏色。默認值:000000(黑色)
size 可選參數,指定文字水印的文字大小(單位為px)。(0,1000]
shadow可選參數,指定文字水印的陰影透明度。[0,100]
rotate 可選參數,指定文字順時針旋轉角度。[0,360]
fill 可選參數,指定是否將水印鋪滿原圖。0、1
1:表示將水印鋪滿原圖。
0:表示不將水印鋪滿全圖。
~水印圖片目前僅支持 PNG、JPG 和 WebP 格式。
加水印圖片後綴示例eg:
?x-oss-process=image/watermark,rotate_30,fill_1,size_20,color_B0C4DE,shadow_50,t_100,g_center,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ
rotate_30:旋轉角度
fill:水印是鋪滿 還是單獨一個水印
size:水印文字大小;
color:水印文字顏色
shadow:水印文字陰影
t:水印透明度
g:水印位置
text:水印文字 文字要轉換為 base64 格式
測試圖片地址:
https://zhuoyou-shop-test.oss-cn-hangzhou.aliyuncs.com/images/affair.jpg?x-oss-process=image/watermark,rotate_30,fill_1,size_20,color_B0C4DE,shadow_50,t_100,g_center,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ
2.壓縮圖片介紹
介紹地址
https://help.aliyun.com/document_detail/44705.html?spm=a2c4g.11186623.6.1665.58002e93foKl5K
參數 quality
q決定圖片的相對質量,對原圖按照q%進行質量壓縮。例如,如果原圖質量為100%,添加quality,q_90參數會得到質量為90%的圖片。如果原圖質量為80%,添加quality,q_90參數會得到質量72%的圖片。
只有為JPG格式的原圖添加該參數,才可以決定圖片的相對質量。如果原圖為WebP格式,添加該參數相當於指定了原圖絕對質量,即與參數Q的作用相同。
Q決定圖片的絕對質量,將原圖質量壓縮至Q%,如果原圖質量小於指定參數值,則按照原圖質量重新進行壓縮。
例如,如果原圖質量是95%,添加quality,Q_90參數會得到質量90%的圖片。如果原圖質量是80%,添加quality,Q_90隻能得到質量80%的圖片。
該參數只能對保存格式為JPG、WebP的圖片使用,對其他格式的圖片無效果。 如果同時指定了q和Q,會按照Q的值進行處理。
eg:
?x-oss-process=image/quality,q_80
quality,q_80表示把圖片壓縮至80%
》在質量變換時不指定Q或者q參數,可能會導致圖片佔用空間變大。
》由於 僅支持有損壓縮的圖片格式: JPG和WebP 不支持png 所以要 先將圖片轉換為jpg格式 在壓縮 因為壓縮只能是jpg格式
圖片格式轉換
介紹地址:
https://help.aliyun.com/document_detail/44703.html?spm=a2c4g.11186623.6.1663.53c1e849R2jCmX
參數:format
jpg將原圖保存成 jpg 格式,如果原圖是 png、webp、bmp 存在透明通道,默認會把透明填充成白色。
png將原圖保存成 png 格式。
webp將原圖保存成 webp 格式。
bmp將原圖保存成 bmp 格式。
gif將 gif 格式保存成 gif 格式,非 gif 格式是按原圖格式保存。
tiff將原圖保存成 tiff 格式。
(將圖片轉換成對應格式,包括 jpg、png、bmp、webp、gif、tiff。 不填格式,則默認按原圖格式返回。
對於普通縮略請求, 建議 format 參數放到處理參數串最後,例如:image/resize,w_100/format,jpg。
對於縮略+水印的請求,建議 format 參數跟縮略參數放在一起,例如:image/reisze,w_100/format,jpg/watermark,...。
保存成 jpg 格式時,默認是保存成標准型的 jpg (Baseline JPEG), 如果想指定是漸進式 JPEG (Progressive JPEG), 可以指定參數 interlace,)
eg:
?x-oss-process=image/format,jpg
表示將圖片格式轉換為jpg圖片
所以壓縮圖片最終的後綴
?x-oss-process=image/format,jpg/quality,q_80
比如:https://zhuoyou-shop-test.oss-cn-hangzhou.aliyuncs.com/images/v2-_r.jpg?x-oss-process=image/format,jpg/quality,q_70
介紹地址:
https://help.aliyun.com/document_detail/99372.html?spm=a2c4g.11186623.6.1644.2ce22e935lWO
video視頻截幀
https://help.aliyun.com/document_detail/64555.html?spm=a2c4g.11186623.2.17.120251b0x3pgs4#concept-kz1-cwc-wdb
操作分類:video
操作名稱:snapshot
t指定截圖時間。[0,視頻時長] 單位:ms
w指定截圖寬度,如果指定為0,則自動計算。[0,視頻寬度] 單位:像素(px)
h指定截圖高度,如果指定為0,則自動計算;如果w和h都為0,則輸出為原視頻寬高。[0,視頻高度] 單位:像素(px)
m指定截圖模式,不指定則為默認模式,根據時間精確截圖。如果指定為fast,則截取該時間點之前的最近的一個關鍵幀。比如:fast
f指定輸出圖片的格式。比如:jpg、png
ar指定是否根據視頻信息自動旋轉圖片。如果指定為auto,則會在截圖生成之後根據視頻旋轉信息進行自動旋轉。比如:auto
eg:
使用fast模式截取視頻7s處的內容,輸出為JPG格式的圖片,寬度為800,高度為600。
?x-oss-process=video/snapshot,t_7000,f_jpg,w_800,h_600,m_fast
使用精確時間模式截取視頻50s處的內容,輸出為JPG格式的圖片,寬度為800,高度為600。
?x-oss-process=video/snapshot,t_50000,f_jpg,w_800,h_600
比如:http://hr-culture.oss-cn-hangzhou.aliyuncs.com/videos/4.mp4?x-oss-process=video/snapshot,t_2000,f_jpg,m_fast