現在專案的utils檔案下建立ossupload.js
,內容如下
import axios from '@/axios'
import from "@/api/index.js";
const basic = require("@/config/index.js");
// 檔案上傳url
let uploadurl = publicapi.ossupload
let accessid = ''
let policybase64 = ''
let signature = ''
let callbackbody = ''
let key = ''
let expire = 0
let host = ''
let g_object_name = ''
let now = date.parse(new date()) / 1000;
// 生成隨機字串
function random_string(len)
return pwd;
}// 獲取使用者上傳源檔名
function get_file_name(filename)
return suffix;
}// 把隨機生成的字串拼接在原始上傳檔名後面生成新的唯一檔名
function set_file_name(filename)
// 獲取後端返回的簽名資訊,生成oss引數
function oss(filename = null)
*/policybase64 = res['policy']
accessid = res['accessid']
signature = res['signature']
expire = parseint(res['expire'])
callbackbody = res['callback']
host = res['host']
key = res['dir']
if (filename != null)
// 返回表單上傳需要的引數資訊
return ;
})}}
export
然後在需要上傳的地方使用
upload files
ALI OSS web簽名直傳檔案解讀
要清楚的兩個邏輯點 1 客戶端要上傳時,到應用伺服器取上傳的policy及簽名。2 客戶端拿到簽名直接上傳到oss。3 在控制台中加入兩個配置 跨域設定,網域名稱配置碼前說明 bucket name 你在伺服器中建立的儲存空間名,在它裡面就可以進行儲存了,還可以建立資料夾 url字尾endpoint...
服務端簽名後直傳OSS
上傳oss流程 客戶端 向 伺服器請求簽名 伺服器 伺服器返回簽名 客戶端 將獲取到的簽名放入url中傳送至oss驗證 oss伺服器 一.表單直傳oss優點 流程上 少了一步 架構上 走 伺服器,上傳量過大的時候,瓶頸在 伺服器,採用表單上傳後 上傳都是直接從客戶端傳送到oss,上傳量過大時,壓力在...
vue 前端oss直傳
在vue框架中使用oss直傳,前端直接調oss介面,服務端直接將所有檔案存在同乙個目錄下 提高效率 之所以網頁上看到有資料夾的區分,是因為根據前端命名方式 一般是自定義資料夾名字加檔案名字加時間搓 來製造有資料夾區分的效果,這個命名可以理解成是這個檔案的唯一標識。傳給後端的時候直接把這個命名傳入即可...