storage.md 5.5 KB
Newer Older
雪洛's avatar
雪洛 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
开发者使用`uniCloud`的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等;`uniCloud`云存储支持文本、图片和其他由用户生成的内容存储到云端,并提供CDN下载地址,

开发者可在客户端使用云存储API,文件上传成功后,系统会自动生成一个资源链接,开发者需保存该文件地址供后续业务下载使用。

即将支持云函数中使用云存储功能。

## uploadFile(Object object)

上传文件到云存储
#### 请求参数
**Object object**

|参数名						|类型			|必填	|默认值	|说明												|平台差异说明		|
|:-:							|:-:			|:-:	|:-:		|:-:												|:-:						|
|filePath					|String		|是		|-			|要上传的文件对象						|-							|

<!-- |cloudPath				|String		|是		|-			|文件的绝对路径,包含文件名	|仅腾讯云侧支持	| -->
<!-- |onUploadProgress	|Function	|否		|-			|上传进度回调								|仅腾讯云侧支持	| -->

<!-- **注意**

- `cloudPath` 为文件的绝对路径,包含文件名 foo/bar.jpg、foo/bar/baz.jpg 等,不能包含除[0-9 , a-z , A-Z]、/、!、-、\_、.、、\*和中文以外的字符,使用 / 字符来实现类似传统文件系统的层级结构。[查看详情](https://cloud.tencent.com/document/product/436/13324) -->

#### 响应参数

|字段		|类型	|说明														|
|:-:		|:-:	|:-:														|
|code		|String	|状态码,操作成功则不返回									|
|message	|String	|错误描述													|
|fileID		|String	|文件唯一 ID,用来访问文件,建议存储起来	|
|requestId	|String	|请求序列号,用于错误排查									|

#### 示例代码

<!-- 
cloudPath: 'test-admin.jpeg',
filePath: filePath,
onUploadProgress: function(progressEvent) {
  console.log(progressEvent);
  var percentCompleted = Math.round(
    (progressEvent.loaded * 100) / progressEvent.total
  );
}
 -->

```javascript
uni.chooseImage({
	count: 1,
	success(res) {
		console.log(res);
		if (res.tempFilePaths.length > 0) {
			let filePath = res.tempFilePaths[0]
			//进行上传操作

			// promise
			const result = await uniClient.uploadFile({
				filePath: filePath
			});

			// callback
			uniClient.uploadFile({
				filePath: filePath
				},
				success() {},
				fail() {},
				complete() {}
			});
			
		}
	}
});

```

**Tips**

- 阿里云返回的fileID为链接形式

<!-- ## getTempFileURL(Object getTempFileURLOptions)

获取文件临时下载链接,**仅腾讯云支持**

#### 请求参数

|字段		|类型						|必填	|默认值	|说明								|平台差异说明	|
|:-:		|:-:						|:-:	|:-:	|:-:								|:-:			|
|fileList	|&lt;Array&gt;.String,Object|是		|-		|要获取下载链接的文件 ID 组成的数组	|仅腾讯云支持	|

**fileList**

|字段	|类型	|必填	|说明					|
|:-:	|:-:	|:-:	|:-:					|
|fileID	|String	|是		|文件 ID				|
|maxAge	|Number	|是		|文件链接有效期,单位:秒	|

#### 响应参数

|字段		|类型					|说明							|
|:-:		|:-:					|:-:							|
|code		|String					|状态码,操作成功则为 SUCCESS	|
|message	|String					|错误描述						|
|fileList	|&lt;Array&gt;.Object	|存储下载链接的数组				|
|requestId	|String					|请求序列号,用于错误排查		|

**fileList**

|字段		|类型	|说明			|
|:-:		|:-:	|:-:			|
|fileID		|String	|文件 ID		|
|tempFileURL|String	|文件访问链接	|

#### 示例代码

```javascript
// promise
uniClient.getTempFileURL({
		fileList: ['cloud://test-28farb/a.png']
	})
	.then(res => {});

// callback
uniClient.getTempFileURL({
	fileList: ['cloud://test-28farb/a.png'],
	success() {},
	fail() {},
	complete() {}
});
```
 -->
## deleteFile(Object object)

删除云端文件

#### 请求参数

**Object object**

|字段		|类型					|必填	|说明						|
|:-:		|:-:					|----	|:-:						|
|fileList	|&lt;Array&gt;.String	|是		|要删除的文件 ID 组成的数组,**阿里云只支持一次删除一个文件**|

#### 响应参数

|字段		|类型					|必填	|说明						|
|:-:		|:-:					|:-:	|:-:						|
|code		|String					|否		|状态码,操作成功则不返回	|
|message	|String					|否		|错误描述					|
|fileList	|&lt;Array&gt;.Object	|否		|删除结果组成的数组			|
|requestId	|String					|否		|请求序列号,用于错误排查	|

**fileList定义**

|字段	|类型	|必填	|说明						|
|:-:	|:-:	|:-:	|:-:						|
|code	|String	|否		|删除结果,成功为 SUCCESS	|
|fileID	|String	|是		|文件 ID					|

#### 示例代码

```javascript
// promise
uniClient
  .deleteFile({
    fileList: ['cloud://jimmytest-088bef/1534576354877.jpg']
  })
  .then(res => {});

// callback
uniClient.deleteFile(
  {
    fileList: ['cloud://jimmytest-088bef/1534576354877.jpg'],
	success(){},
	fail(){},
	complete(){}
  }
);
```

<!-- ### 下载文件

downloadFile(Object)

请求参数

| 字段 | 类型 | 必填 | 说明
| :-: | :-: | :-: | :-: |
| fileID | String | 是 | 要下载的文件的id
| tempFilePath | String | 否 | 下载的文件要存储的位置

响应参数

| 字段 | 类型 | 必填 | 说明
| :-: | :-: | :-: | :-: |
| code | String | 否 | 状态码,操作成功则不返回
| message | String | 否 | 错误描述
| fileContent | Buffer | 否 | 下载的文件的内容。如果传入tempFilePath则不返回该字段
| requestId | String | 否 | 请求序列号,用于错误排查

示例代码

```javascript
let result = await tcb.downloadFile({
    fileID: "cloud://aa-99j9f/my-photo.png",
    // tempFilePath: '/tmp/test/storage/my-photo.png',
	success(){},
	fail(){},
	complete(){}
});
``` -->