hookehuyr

联调文件上传和图片上传控件

1 <!-- 1 <!--
2 * @Date: 2022-08-31 16:16:49 2 * @Date: 2022-08-31 16:16:49
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-11-21 14:54:30 4 + * @LastEditTime: 2022-12-30 10:32:42
5 - * @FilePath: /data-table/src/components/ImageUploaderField/index.vue 5 + * @FilePath: /data-table/src/components/FileUploaderField/index.vue
6 * @Description: 文件上传控件 6 * @Description: 文件上传控件
7 --> 7 -->
8 <template> 8 <template>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 </div> 13 </div>
14 <div 14 <div
15 v-if="item.component_props.note" 15 v-if="item.component_props.note"
16 - style="font-size: 0.9rem; margin-left: 1rem; color: gray; padding-bottom: 0.5rem" 16 + style="font-size: 0.9rem; margin-left: 1rem; color: gray; padding-bottom: 0.5rem; padding-top: 0.25rem;"
17 > 17 >
18 {{ item.component_props.note }} 18 {{ item.component_props.note }}
19 </div> 19 </div>
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
38 :before-read="beforeRead" 38 :before-read="beforeRead"
39 :after-read="afterRead" 39 :after-read="afterRead"
40 :before-delete="beforeDelete" 40 :before-delete="beforeDelete"
41 + :multiple="item.component_props.max_size > 1"
41 > 42 >
42 <van-button icon="plus" type="primary">上传文件</van-button> 43 <van-button icon="plus" type="primary">上传文件</van-button>
43 </van-uploader> 44 </van-uploader>
...@@ -104,16 +105,21 @@ const beforeRead = (file) => { ...@@ -104,16 +105,21 @@ const beforeRead = (file) => {
104 // (item) => `video/${item}` 105 // (item) => `video/${item}`
105 // ); 106 // );
106 let flag = true; 107 let flag = true;
108 + if (file.length + 1 > props.item.component_props.max_count) {
109 + // 数量限制
110 + flag = false;
111 + showToast(`最大上传数量为${props.item.component_props.max_count}个`);
112 + }
107 if (fileList.value.length + 1 > props.item.component_props.max_count) { 113 if (fileList.value.length + 1 > props.item.component_props.max_count) {
108 // 数量限制 114 // 数量限制
109 flag = false; 115 flag = false;
110 showToast(`最大上传数量为${props.item.component_props.max_count}个`); 116 showToast(`最大上传数量为${props.item.component_props.max_count}个`);
111 } 117 }
112 - if (file.size > props.item.component_props.max_size) { 118 + if ((file.size / 1024 / 1024).toFixed(2) > props.item.component_props.max_size) {
113 // 体积限制 119 // 体积限制
114 flag = false; 120 flag = false;
115 showToast( 121 showToast(
116 - `最大文件体积为${(props.item.component_props.max_size / 1024 / 1024).toFixed(2)}MB` 122 + `最大文件体积为${props.item.component_props.max_size}MB`
117 ); 123 );
118 } 124 }
119 // if (_.isArray(file)) { 125 // if (_.isArray(file)) {
...@@ -258,8 +264,9 @@ var muliUpload = async (files) => { ...@@ -258,8 +264,9 @@ var muliUpload = async (files) => {
258 264
259 // 生成数据库真实文件地址 265 // 生成数据库真实文件地址
260 const uploadQiniu = async (file, token, name, md5) => { 266 const uploadQiniu = async (file, token, name, md5) => {
267 + let suffix = /\.[^\.]+$/.exec(name); // 获取后缀
261 // let affix = uuidv4(); 268 // let affix = uuidv4();
262 - let fileName = `uploadForm/${formCode}/${md5}.${name.split(".")[1]}`; 269 + let fileName = `uploadForm/${formCode}/${md5}${suffix}`;
263 let formData = new FormData(); 270 let formData = new FormData();
264 formData.append("file", file); // 通过append向form对象添加数据 271 formData.append("file", file); // 通过append向form对象添加数据
265 formData.append("token", token); 272 formData.append("token", token);
......
1 <!-- 1 <!--
2 * @Date: 2022-08-31 16:16:49 2 * @Date: 2022-08-31 16:16:49
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-11-21 14:54:30 4 + * @LastEditTime: 2022-12-30 10:31:02
5 * @FilePath: /data-table/src/components/ImageUploaderField/index.vue 5 * @FilePath: /data-table/src/components/ImageUploaderField/index.vue
6 * @Description: 图片上传控件 6 * @Description: 图片上传控件
7 --> 7 -->
...@@ -11,6 +11,12 @@ ...@@ -11,6 +11,12 @@
11 {{ item.component_props.label 11 {{ item.component_props.label
12 }}<span v-if="item.component_props.required">&nbsp;*</span> 12 }}<span v-if="item.component_props.required">&nbsp;*</span>
13 </div> 13 </div>
14 + <div
15 + v-if="item.component_props.note"
16 + style="font-size: 0.9rem; margin-left: 1rem; color: gray; padding-bottom: 0.5rem; padding-top: 0.25rem;"
17 + >
18 + {{ item.component_props.note }}
19 + </div>
14 <div style="padding: 1rem"> 20 <div style="padding: 1rem">
15 <van-uploader 21 <van-uploader
16 :name="item.name" 22 :name="item.name"
...@@ -19,7 +25,7 @@ ...@@ -19,7 +25,7 @@
19 :after-read="afterRead" 25 :after-read="afterRead"
20 :before-delete="beforeDelete" 26 :before-delete="beforeDelete"
21 v-model="fileList" 27 v-model="fileList"
22 - :multiple="item.component_props.multiple" 28 + :multiple="item.component_props.max_size > 1"
23 /> 29 />
24 </div> 30 </div>
25 <div class="type-text">上传类型:&nbsp;{{ type_text }}</div> 31 <div class="type-text">上传类型:&nbsp;{{ type_text }}</div>
...@@ -111,13 +117,11 @@ const beforeRead = (file) => { ...@@ -111,13 +117,11 @@ const beforeRead = (file) => {
111 flag = false; 117 flag = false;
112 showToast(`最大上传数量为${props.item.component_props.max_count}张`); 118 showToast(`最大上传数量为${props.item.component_props.max_count}张`);
113 } 119 }
114 - if (file.size > props.item.component_props.max_size) { 120 + if ((file.size / 1024 / 1024).toFixed(2) > props.item.component_props.max_size) {
115 // 体积限制 121 // 体积限制
116 flag = false; 122 flag = false;
117 showToast( 123 showToast(
118 - `最大文件体积为${(props.item.component_props.max_size / 1024 / 1024).toFixed( 124 + `最大文件体积为${props.item.component_props.max_size}MB`
119 - 2
120 - )}MB`
121 ); 125 );
122 } 126 }
123 } 127 }
...@@ -259,10 +263,20 @@ var muliUpload = async (files) => { ...@@ -259,10 +263,20 @@ var muliUpload = async (files) => {
259 } 263 }
260 }; 264 };
261 265
266 +
267 +
268 +const getType = (file, name) => {
269 + var index1 = name.lastIndexOf(".");
270 + var index2 = file.length;
271 + var type = file.substring(index1, index2).toUpperCase();
272 + return type;
273 +}
274 +
262 // 生成数据库真实图片地址 275 // 生成数据库真实图片地址
263 const uploadQiniu = async (file, token, name, md5) => { 276 const uploadQiniu = async (file, token, name, md5) => {
277 + let suffix = /\.[^\.]+$/.exec(name); // 获取后缀
264 // let affix = uuidv4(); 278 // let affix = uuidv4();
265 - let fileName = `uploadForm/${formCode}/${md5}.${name.split(".")[1]}`; 279 + let fileName = `uploadForm/${formCode}/${md5}${suffix}`;
266 let formData = new FormData(); 280 let formData = new FormData();
267 formData.append("file", file); // 通过append向form对象添加数据 281 formData.append("file", file); // 通过append向form对象添加数据
268 formData.append("token", token); 282 formData.append("token", token);
......