oss上傳回調
前段時間正好做個項目,就是用的oss,普通上傳和斷點續傳,代碼貼出來,看是不是你需要的
publicclassOssManage{
publicstaticStringACCESS_KEY_ID=null;
publicstaticStringACCESS_KEY_SECRET=null;
publicstaticStringENDPOINT=null;
publicstaticStringBUCKETNAME=null;
publicstaticStringBUCKETNAME_VIDEO=null;
publicstaticStringOUT_OF_DATE=null;
privateOSSClientclient=null;
privateObjectMetadatameta=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.Exceptione){
e.printStackTrace();
}
}
publicvoidinit(){
//<ahref="https://www..com/s?wd=%E5%88%9D%E5%A7%8B%E5%8C%96&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">初始化</a>一個OSSClient
client=newOSSClient(ENDPOINT,ACCESS_KEY_ID,ACCESS_KEY_SECRET);
meta=newObjectMetadata();
}
/**
*@Description:上傳文件到OSS<ahref="https://www..com/s?wd=%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">文件伺服器</a>
*@paramcontent文件流
*@paramkey上傳為OSS<ahref="https://www..com/s?wd=%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">文件伺服器</a>的唯一標識
*@parammimeType文檔類型
*@throwsException
*@ReturnType:StringOSSObject的ETag值。
*/
publicStringuploadFile(InputStreamcontent,Stringkey,StringmimeType)throwsException{
//進行<ahref="https://www..com/s?wd=%E5%88%9D%E5%A7%8B%E5%8C%96&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">初始化</a>
init();
//必須設置ContentLength
meta.setContentType(mimeType);
//上傳Object.
LogUtil.printConsoleLog("*****************上傳圖片到oss伺服器開始*****************"+key);
PutObjectResultresult=client.putObject(BUCKETNAME,key,content,meta);
LogUtil.printConsoleLog("*****************上傳圖片到oss伺服器結束*****************"+key);
returnresult.getETag();
}/**
*@Description:根據key獲取oss伺服器上的圖片地址
*@paramkey
*@return
*@ReturnType:String
*/
publicStringgetImgURl(Stringkey){
init();
Dateexpires=newDate(newDate().getTime()+Integer.parseInt(OUT_OF_DATE));//30minutetoexpire
;
if(key.startsWith("msplatform")){
generatePresignedUrlRequest=(BUCKETNAME,key);
}else{
generatePresignedUrlRequest=(BUCKETNAME_VIDEO,key);
}
generatePresignedUrlRequest.setExpiration(expires);
URLurl=client.generatePresignedUrl(generatePresignedUrlRequest);
returnurl.toString();
}
/**
*@Description:根據key獲取oss伺服器上的ipa文件地址
*@paramkey
*@return
*@ReturnType:String
*/
publicStringgetIpaURl(Stringkey){
init();
Dateexpires=newDate(newDate().getTime()+10*365*24*3600*1000);
;
if(key.startsWith("msplatform")){
generatePresignedUrlRequest=(BUCKETNAME,key);
}else{
generatePresignedUrlRequest=(BUCKETNAME_VIDEO,key);
}
generatePresignedUrlRequest.setExpiration(expires);
URLurl=client.generatePresignedUrl(generatePresignedUrlRequest);
returnurl.toString();
}
/**
*@Description:根據key獲取oss伺服器上的圖片地址
*@paramkey
*@return
*@ReturnType:String
*/
publicInputStreamgetObject(Stringkey){
init();
OSSObjectobject=null;
if(key.startsWith("msplatform")){
object=client.getObject(BUCKETNAME,key);
}else{
object=client.getObject(BUCKETNAME_VIDEO,key);
}
object.getObjectMetadata().getContentType();
//獲取Object的<ahref="https://www..com/s?wd=%E8%BE%93%E5%85%A5%E6%B5%81&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">輸入流</a>
InputStreamobjectContent=object.getObjectContent();
returnobjectContent;
}
/**
*@Description:刪除文件
*@paramkeyOSS<ahref="https://www..com/s?wd=%E6%96%87%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">文件伺服器</a>上文件的唯一標識
*@ReturnType:void
*/
publicvoiddeleteFile(Stringkey){
init();
client.deleteObject(BUCKETNAME,key);
}
/**
*@Description:斷點上傳文件到OSS文件伺服器
*@paramcontent文件流
*@paramkey上傳為OSS文件伺服器的唯一標識
*@paramposition位置
*/
publicStringappendObjectFile(InputStreamcontent,Stringkey,intposition,StringmimeType)throwsException{
//進行<ahref="https://www..com/s?wd=%E5%88%9D%E5%A7%8B%E5%8C%96&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-"target="_blank"class="-highlight">初始化</a>
init();
//必須設置ContentLength
meta.setContentLength(position);
meta.setContentType(mimeType);
meta.setCacheControl("no-cache");
meta.setContentEncoding("utf-8");
//上傳
LogUtil.printConsoleLog("*****************斷點上傳圖片到oss伺服器開始*****************"+key);
=newAppendObjectRequest(BUCKETNAME,key,content,meta);
appendObjectRequest.setPosition(Long.valueOf(position));
=client.appendObject(appendObjectRequest);
LogUtil.printConsoleLog("*****************斷點上傳圖片到oss伺服器結束*****************"+key);
returnappendObjectResult.getNextPosition().toString();
}
publicstaticvoidmain(String[]args){
OssManageossManage=newOssManage();
}
}
② 阿里雲oss php上傳圖片問題 上傳前把圖片重命名之後再上傳到oss 怎麼寫代碼呢
他這里有一個上傳示例的
<?php
/**
*載入sdk包以及錯誤代碼包
*/
require_once'oss_php_sdk/sdk.class.php';
$oss_sdk_service=newALIOSS();
$bucket='你的bucket名字';
if((($_FILES["file"]["type"]=="image/gif")
||($_FILES["file"]["type"]=="image/jpeg")
||($_FILES["file"]["type"]=="image/pjpeg"))
&&($_FILES["file"]["size"]<2000000))
{
if($_FILES["file"]["error"]>0)
{
echo"ReturnCode:".$_FILES["file"]["error"]."<br/>";
}
else
{
echo"Upload:".$_FILES["file"]["name"]."<br/>";
echo"Type:".$_FILES["file"]["type"]."<br/>";
echo"Size:".($_FILES["file"]["size"]/1024)."KB<br/>";
echo"Tempfile:".$_FILES["file"]["tmp_name"]."<br/>";
$content='';
$length=0;
$fp=fopen($_FILES["file"]["tmp_name"],'r');
if($fp)
{
$f=fstat($fp);
$length=$f['size'];
while(!feof($fp))
{
$content.=fgets($fp,8192);
}
}
$upload_file_options=array('content'=>$content,'length'=>$length);
$upload_file_by_content=$oss_sdk_service->upload_file_by_content($bucket,$_FILES["file"]["name"],$upload_file_options);//$_FILES["file"]["name"]這個就是文件名,你可以自己定義的。
$img_url="http://storage.aliyun.com/".$bucket."/".$_FILES["file"]["name"];
echo"Uploadsuccessfully!TheOSSURLofthisfile:".$img_url."<br/>";
echo"Ifthebucketispublic-read,theuploadedimagecanbeshownas:"."<br/>";
echo"<imgsrc=$img_url/>";
}
}
else
{
echo"Invalidfile";
}
關於文件名我已經給你注釋在代碼中了,你試試看
③ 如何讓客戶端直接上傳文件到OSS
很簡單,你先在項目建設一個臨時放緩存文件的目錄,然後將文件放在這個臨時緩存目錄,再將目錄里的文件上傳到oss上,然後刪掉緩存目錄里的臨時文件。。。。剛才我同事說的思維是這樣,具體代碼待會兒用到了再來完善回答
④ 如何直接上傳文件至OSS,不用伺服器中轉
上述四種方法的比較: 1、開發簡單,由於要定時起一個HTTP 連接去獲得進度信息,因此,發生的連接請求也增多 ,另外,在低速的情況下,常常會出各種各樣的BUG,網路環境的差異,還造成那個周期很 難選擇。 2、開發較復雜,COMET 本身需要伺服器的支持,這樣TOMCAT 至少得選6.0,否則伺服器長連 接,壓力肯定受不了,但是,性能相對好一些,由於一次上傳實際上只啟動了兩個HTTP 鏈接 請求,比起AJAX 來說,那是要少很多請求了。另外一個優點是,COMET 將使得伺服器可以主 動將進度情況匯報給客戶端,因此,客戶端的進度條相對來說,要准確一點。 3、目前看來解決方案最好的一個了,雖然開發需要涉及到 FLASH、JAVASCRIPT、以及 JAVA 的 開發,但是代碼量都不是很多,因此,復雜程度相對屬於中等程度。但是FLASH 也有幾個問 題:第一、瀏覽器 FLASH 版本兼容問題,第二、FLASH 是通過獲得發送數據的進度來體現進度 條的,因此雖然不需要伺服器端開發進度部分的代碼,但是進度的展現有些不是很准確,經 常會有一開始速度很快,但是後面越來越慢的情況。 4、就不說了,開發肯定是最麻煩的,但是進度條效果肯定是最好的,但要給每種瀏覽器都 要搞個插件,還是比較痛苦的。 總結一下,希望對大家有幫助。 2 其實很麻煩的,之前試過,會有下面幾個問題: 第一、伺服器端一定要選擇支持HTTP 長連接的伺服器,否則操作系統的線程限制,會導致並 發降低。 第二、除非原來就採用的是COMET 的進度方式,否則,你要把周期獲得進度的方式,改成 COMET 的方式,那很郁悶的,COMET 要伺服器主動把進度信息用JAVASCRIPT 的方式發回客戶端 ,所以需要把結構轉化為JAVASCRIPT 調用才行。 第三、對於不同的瀏覽器,處理 JAVASCRIPT 的方式是不一樣的,我試驗的結果是,IE 會在收 到一定數量的JAVASCRIPT 之後才執行,所以雖然我在伺服器端每次都調用了flush 方法,但 是界面上還是需要等一段時間才能響應。而這段時間又不好控制了,因為上傳文件大小的不 一樣,導致了下發的JAVASCRIPT 數量也不一樣,所以基本很難達到FLASH 那樣的效果。 其實如果已經決定採用flash 了,那就不需要再去修改伺服器端的代碼了,因為那個進度信 息伺服器發不發都不會影響到代碼的執行,反正FLASH 本身已經提供了進度指示了,所以, 說簡單地,要改成FLASH 上傳,你直接做個FLASH 客戶端就好了,不需要再改伺服器端了。 對了,還有一種情況需要改伺服器端,那就是FLASH 上傳多個文件是採用多線程上傳的,因 此如果你一次上傳多個文件,那就需要改伺服器端了。需要在所有線程上傳完成的情況下, 再去修改資料庫。
⑤ js oss multipartupload 怎麼回調
設置或獲取整個 URL 為字元串。
alert(window.location.href);
設置或獲取與 URL 關聯的埠號碼。
alert(window.location.port)
設置或獲取 URL 的協議部分。 alert(window.location.protocol)
設置或獲取 href 屬性中在井號「#」後面的分段。 alert(window.location.hash)
設置或獲取 location 或 URL 的 hostname 和 port 號碼。 alert(window.location.host)
設置或獲取 href 屬性中跟在問號後面的部分。 alert(window.location.search)
⑥ 怎麼保護OSS上傳介面。我使用的是阿里雲oss,本來只有1gb儲蓄文件。但是最近被人惡意灌入垃圾,
你使用的是阿里雲的賬戶的key還是子賬戶做訪問的?phpsdk其實也沒什麼好辦法去保護的,其實問題主要根源還是在於域名這一關上。
⑦ 上傳圖片到oss然後獲取到圖片的url,然後通過url在網頁查看圖片怎麼弄。
保存圖片地址,類似「~/Images/UserId/face.png」那麼這個屬於伺服器端相對地址stringdir=@"\UserFiles\Images\";stringphyPath=Request.PhysicalApplicationPath;stringvirPath=dir+Server.HtmlEncode(FileUpload1.FileName);stringsavePath=phyPath+virPath;fileUpload.SaveAs(savePath);那麼你往資料庫里保存的就是virPath這個虛擬路徑。virPath=Server.MapPath(dir+FileUpload1.FileName);這也是轉換正相對URL。
⑧ C#OSS上傳回調
阿里雲OSS?
${bucket}、${object}、${etag}、${size}、${mimeType} 這幾個是系統變數,是回調給你服務端的時候傳遞回來的參數,用 ${} 圈起來是佔位用的,你收到的時候已經被替換成實際值了。
${x:var1}、${x:va2} 是自定義變數,是除了上述系統變數之外根據你業務需求自定義的參數,var1、var2 是鍵名,不是值。你應該起叫 .....&my_name=${x:var1}&my_age=${x:var2},然後在下面的請求正文里加入:
{
"x:var1":"張三",
"x:var2":24
}
這樣你服務端收到回調時的 my_name、my_age 兩個參數的值就是「張三」、「24」。
有關 Callback 的詳細文檔:https://help.aliyun.com/document_detail/31989.html?spm=5176.doc31853.2.2.aYia1U
⑨ 阿里雲oss上傳文件怎麼返回上傳文件的url
addUserMetadata("usermeta" If you need to set user metadata URL url = client; 2)java版代碼示例如下, " generatePresignedUrlRequest.setMethod(HttpMethod? new GeneratePresignedUrlRequest(bucketName;/: generatePresignedUrlRequest; generatePresignedUrlRequest:GeneratePresignedUrlRequest generatePresignedUrlRequest = 1)url中包含簽名的好像能夠實現文件的下載; /.PUT););uservalue"Oss中url中授權文件上傳可以實現 java版代碼示例如下,阿里雲能實現url中授權文件上傳嗎;, key).setExpiration(expires).generatePresignedUrl(generatePresignedUrlRequest)
⑩ javascript 上傳文件到阿里雲的oss,上傳文件成功後怎麼獲取文件的真實路徑
如果你直接使用 javascript 將阿里雲的accessId、accessKey寫在頁面上是不安全的,你可以使用後台存儲這些敏感的信息,官網有相關的SDK ,你可以選擇你常用的。
在後台編寫你的回調函數,將回調函數憑證信息返回給前端,前端使用回調函數憑證訪問OSS,就可以獲取到回調函數信息。