choose.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. import config from '@/config'
  2. import {
  3. uplaodfile
  4. } from "@/api/apis.js";
  5. import {
  6. getToken
  7. } from '@/utils/auth'
  8. // 选择图片
  9. export function chooseImage() {
  10. uni.chooseImage({
  11. sourceType: ['album', 'camera'], // 使用相机拍照
  12. camera: 'back', // 默认使用后置摄像头,可选值有front、back
  13. success: (res) => {
  14. console.log('拍照成功:', res);
  15. // 处理图片,例如预览图片或上传到服务器
  16. // upload(res)
  17. let file = res.tempFiles[0];
  18. var formData = new FormData();
  19. formData.append('file', file)
  20. uplaodfile(formData).then(a => {
  21. console.log(aaa)
  22. })
  23. },
  24. fail: (err) => {
  25. console.error('拍照失败:', err);
  26. }
  27. });
  28. }
  29. export function upload(res) {
  30. let file = res.tempFiles[0];
  31. var formData = new FormData();
  32. formData.append('file', file)
  33. var requestOptions = {
  34. method: 'post',
  35. headers: {
  36. Authorization: 'Bearer ' + getToken()
  37. },
  38. body: formData,
  39. };
  40. fetch(
  41. config.uploadUrl + '/file/upload/v1',
  42. requestOptions
  43. )
  44. .then((response) => {
  45. return response.json();
  46. }).then(res => {
  47. console.log(res);
  48. if (res.code == '1000') {
  49. uni.showToast({
  50. title: res.message,
  51. })
  52. } else {
  53. uni.showToast({
  54. title: res.message,
  55. icon: 'error'
  56. })
  57. }
  58. })
  59. }
  60. // 选择视频
  61. export function chooseVideo() {
  62. uni.chooseVideo({
  63. sourceType: ['album', 'camera'], // 使用相机录像
  64. camera: 'back', // 默认使用后置摄像头,可选值有front、back
  65. maxDuration: 60, // 最大录制时长(秒)
  66. success: (res) => {
  67. console.log('视频录制成功:', res);
  68. // 处理视频,例如将视频路径显示在页面上
  69. },
  70. fail: (err) => {
  71. console.error('视频录制失败:', err);
  72. }
  73. });
  74. }
  75. // 选择照片或视频
  76. export function chooseMedia() {
  77. uni.chooseMedia({
  78. count: 9, // 默认为9, 设置为1时只能选择一个文件
  79. mediaType: ['image', 'video'], // 选择媒体类型,可以是'image'或'video'
  80. sourceType: ['album', 'camera'], // 可选择来源是相册还是相机
  81. success: (res) => {
  82. res.tempFiles.forEach(element => {
  83. const tempFilePaths = element.tempFilePath;
  84. // 上传文件到服务器
  85. uploadFile(tempFilePaths);
  86. });
  87. },
  88. fail: (err) => {
  89. console.log('选择媒体失败:', err);
  90. }
  91. });
  92. }
  93. export function getFile(filePath) {
  94. const fileManager = uni.getFileSystemManager();
  95. fileManager.readFile({
  96. filePath: filePath, // 需要读文件的路径
  97. encoding: 'base64', // 编码格式,此处以base64为例,也可以使用'binary'等其他格式
  98. success: (res) => {
  99. console.error('读取文件成功:', res.data);
  100. uploadFile(res.data); // 调用上传方法,传入文件内容
  101. },
  102. fail: (error) => {
  103. console.error('读取文件失败:', error);
  104. }
  105. });
  106. }
  107. export function requestFile(filePath) {
  108. // const blob = new Blob([res.data]);
  109. // files: [formData],
  110. // create: true
  111. plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, (fs) => {
  112. fs.root.getFile(filePath, {}, (fileEntry) => {
  113. fileEntry.file((file) => {
  114. console.log("文件大小:", file);
  115. //创建读取文件对象
  116. let fileReader = new plus.io.FileReader();
  117. //以文本格式读取文件数据内容
  118. // fileReader.readAsText(file, 'utf-8');
  119. //文件读取操作完成时的回调函数
  120. fileReader.readAsArrayBuffer(file);
  121. console.log("aaaa:", fileReader);
  122. fileReader.onloadend = (evt) => {
  123. console.log("文件:", evt);
  124. var fileData = new FormData();
  125. fileData.append('file', new Blob([evt], {
  126. type: file.type
  127. }));
  128. // console.log(JSON.parse(evt.target.result),
  129. // 'JSON.parse(evt.target.result)')
  130. // resolve(JSON.parse(evt.target.result))
  131. // sURL = JSON.parse(evt.target.result).URL;
  132. }
  133. });
  134. // fileEntry.createWriter((writer) => {
  135. // writer.write(new Blob(['Hello, UniApp!'], {
  136. // type: 'text/plain'
  137. // }));
  138. // });
  139. });
  140. });
  141. }
  142. // 上传文件到服务器
  143. export function uploadFile(filePath, fun) {
  144. uni.uploadFile({
  145. url: config.baseUrl + '/file/upload/v1', // 你的上传API地址
  146. filePath,
  147. name: 'file', // 必须填写,后台用来接收文件
  148. header: {
  149. "Content-Type": "multipart/form-data;",
  150. Authorization: 'Bearer ' + getToken()
  151. },
  152. success: (e) => {
  153. let res = JSON.parse(e.data)
  154. if (res.code == 200) {
  155. console.log('上传成功', res.data.path, res.data.url)
  156. fun(res.data);
  157. } else {
  158. uni.showToast({
  159. title: '上传附件失败,请稍候再试!',
  160. duration: 1000,
  161. icon: 'none'
  162. });
  163. fun();
  164. }
  165. },
  166. fail: (uploadFileErr) => {
  167. console.log('上传失败:', uploadFileErr);
  168. return;
  169. },
  170. });
  171. }