storage.md 5.6 KB
Newer Older
雪洛's avatar
雪洛 已提交
1 2 3 4 5 6 7 8
开发者使用`uniCloud`的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等;`uniCloud`云存储支持文本、图片和其他由用户生成的内容存储到云端,并提供CDN下载地址,

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

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

## uploadFile(Object object)

雪洛's avatar
雪洛 已提交
9
上传文件到云存储,**阿里云单文件大小限制为100M,腾讯云单文件最大为5G**
雪洛's avatar
雪洛 已提交
10

雪洛's avatar
雪洛 已提交
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
#### 请求参数
**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
雪洛's avatar
雪洛 已提交
57
			const result = await uniCloud.uploadFile({
雪洛's avatar
雪洛 已提交
58 59 60 61
				filePath: filePath
			});

			// callback
雪洛's avatar
雪洛 已提交
62
			uniCloud.uploadFile({
雪洛's avatar
雪洛 已提交
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
				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
雪洛's avatar
雪洛 已提交
117
uniCloud.getTempFileURL({
雪洛's avatar
雪洛 已提交
118 119 120 121 122
		fileList: ['cloud://test-28farb/a.png']
	})
	.then(res => {});

// callback
雪洛's avatar
雪洛 已提交
123
uniCloud.getTempFileURL({
雪洛's avatar
雪洛 已提交
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
	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
雪洛's avatar
雪洛 已提交
163
uniCloud
雪洛's avatar
雪洛 已提交
164 165 166 167 168 169
  .deleteFile({
    fileList: ['cloud://jimmytest-088bef/1534576354877.jpg']
  })
  .then(res => {});

// callback
雪洛's avatar
雪洛 已提交
170
uniCloud.deleteFile(
雪洛's avatar
雪洛 已提交
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 210
  {
    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(){}
});
``` -->