-
Notifications
You must be signed in to change notification settings - Fork 3
file upload
Jason Guan-Shuo Mai edited this page Nov 30, 2018
·
4 revisions
檔案上傳 WF 5.3
- fullCameraLocationMd5 檔案上傳時,會需要替每個待上傳的檔案設定 site、subSite、cameraLocation等資訊,加上 projectId,即可產生 fullCameraLocationMd5 md5(projectId/site/subSite/cameraLocation),計畫設定上若不需要填寫 subSite,補上字串的 'NULL'
- upload session id 替每個檔案產生一個 uuid v4 的 upload session id ($sessid)
於前端產生 upload session id (uuid v4) 值,以下簡稱 sessid,並依檔案類型上傳至以下位置 (暫時稱為 $PATH_PREFIX):
ZIP:upload/$sessid/zip/
CSV:upload/$sessid/csv/
JPG:upload/$sessid/image/
MP4/AVI:upload/$sessid/video/
只在以下幾個情境需要更新上傳事件狀態:
- 開始上傳時將狀態設為 WAITING
- 成功時更新為 SUCCESS
- 失敗 FAILED
- 取消 CANCELLED
- endpoint
/upload-session/bulk-update
- post data
[
{
_id: $sessid,
projectId: projectId,
$set: {
status: SUCCESS|FAILED|WAITING|CANCELLED
},
$setOnInsert: {
upload_session_id: $sessid,
fullCameraLocationMd5: $fullCameraLocationMd5,
projectId: $projectId,
projectTitle: $projectTitle,
site: $site,
subSite: $subSite,
cameraLocation: $cameraLocation
by: $user_id,
file: $PATH_PREFIX + file.name
},
$upsert: true
}
]
- response
default db response
於前端上傳檔案至 AWS S3 時,加入 projectId, projectTitle, site, subSite, cameraLocation, userId 等 tags;如果 subSite 是空值,請填入字串的 'NULL'
let bucket = 'camera-trap';
let key = $PATH_PREFIX + file.name;
// 替每個上傳檔設定 uploader
let uploader = new AWS.S3.ManagedUpload({
params: {Bucket: bucket, Key: key, Body: file},
tags: [
{Key: "projectId", Value: $projectId},
{Key: "projectTitle", Value: $projectTitle},
{Key: "site", Value: $site},
{Key: "subSite", Value: $subSite},
{Key: "cameraLocation", Value: $cameraLocation},
{Key: "user_id", Value: $user_id}
]
});
let seErrHandler = function (err, data) {
...
}
uploader.send(s3ErrHandler);
uploader.on('httpUploadProgress', function(progress) {
console.log((100 * progress.loaded / progress.total) + '%');
// console.log(progress);
});
query:查詢條件 projection:回傳欄位 (default 是回傳完整文件)
- endpoint
/media/annotation/query
- post data
{
"query": {
"related_upload_sessions": $sessid
}
}
- response
{"ret": [ $multimedia_annotation, ... ]}
顯示與登入使用者相關的上傳操作紀錄
- endpoint
GET /upload-session/mine
- response
{
"ret": [
{
"_id": "test_upload_session_02",
"upload_session_id": "test_upload_session_02",
"projectId": $projectId,
"projectTitle": "測試計畫1",
"fullCameraLocationMd5": "263d239eb09fa3b607f4846e67b91ba3",
"status": "ERROR",
"by": "OrcID_0000-0002-7446-3249",
"modified": 1542009001.994,
"messages": [ // 詳細錯誤訊息
{
"key": "upload/test_upload_session_02/csv/TD06B.csv",
"errors": [
"上傳資料與過往資料重疊,暫不匯入."
],
"modified": 1541750623.705,
"problematic_ids": [潛在有問題的資料ID, ...],
},
{
"key": "upload/test_upload_session_02/csv/TD03A.csv",
"errors": [
"上傳資料與過往資料重疊,暫不匯入."
],
"modified": 1541750915.423,
"problematic_ids": [潛在有問題的資料ID, ...],
},
...
],
"file": "上傳的那個檔案",
"created": 1540788756.494,
"modified": 1542014471.609,
}
]
}