首页 > 编程知识 正文

vue图片上传并预览,uniapp在线预览word

时间:2023-05-04 07:03:01 阅读:11603 作者:1758

uniapp 实现表单中包括上传附件

uniapp做的原生android开发,动态表单数据录入的时候有时候需要上传附件和拍照视频功能

1.进行android平台的判断

if (plus.os.name.toLowerCase() != "android") {uni.showModal({title: '提示',content: '仅支持Android平台',success: function(res) {}});return false} let main = plus.android.runtimeMainActivity();let Intent = plus.android.importClass("android.content.Intent");let fileIntent = new Intent(Intent.ACTION_GET_CONTENT)fileIntent.setType("*/*"); //无类型限制fileIntent.addCategory(Intent.CATEGORY_OPENABLE);main.startActivityForResult(fileIntent, 1);// 获取回调main.onActivityResult = function(requestCode, resultCode, data) {let Activity = plus.android.importClass("android.app.Activity");let ContentUris = plus.android.importClass("android.content.ContentUris");let Cursor = plus.android.importClass("android.database.Cursor");let Uri = plus.android.importClass("android.net.Uri");let Build = plus.android.importClass("android.os.Build");let Environment = plus.android.importClass("android.os.Environment");let DocumentsContract = plus.android.importClass("android.provider.DocumentsContract");let MediaStore = plus.android.importClass("android.provider.MediaStore");let contentResolver = main.getContentResolver()plus.android.importClass(contentResolver);// 返回路径let path = '';if (resultCode == Activity.RESULT_OK) {let uri = data.getData()if ("file" == uri.getScheme().toLowerCase()) { //使用第三方应用打开path = uri.getPath();return;}if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { //4.4以后path = getPath(this, uri);} else { //4.4以下下系统调用方法path = getRealPathFromURI(uri)}// 回调let arr = path.split('/')let fileName = arr[arr.length - 1]that.files.push({path: path,name: fileName})}// 4.4 以上 从Uri 获取文件绝对路径function getPath(context, uri) {let isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;let scheme = uri.getScheme().toLowerCase()if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {/if (isExternalStorageDocument(uri)) {let docId = DocumentsContract.getDocumentId(uri);let split = docId.split(":");let type = split[0];// 如果是手机内部存储if ("primary" == type.toLowerCase()) {return Environment.getExternalStorageDirectory() + "/" + split[1];} else {return '/storage/' + type + "/" + split[1];}}// DownloadsProviderelse if (isDownloadsDocument(uri)) {let id = DocumentsContract.getDocumentId(uri);let split = id.split(":");return split[1]}// MediaProviderelse if (isMediaDocument(uri)) {let docId = DocumentsContract.getDocumentId(uri);let split = docId.split(":");let type = split[0];let contentUri = null;if ("image" == type.toLowerCase()) {contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;} else if ("video" == type.toLowerCase()) {contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;} else if ("audio" == type.toLowerCase()) {contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;}let selection = "_id=?";let selectionArgs = [split[1]];return getDataColumn(context, contentUri, selection, selectionArgs);}}// MediaStore (and general)else if ("content" == scheme) {return getDataColumn(context, uri, null, null);}// Fileelse if ("file" == scheme) {return uri.getPath();}}// 4.4 以下 获取 绝对路径function getRealPathFromURI(uri) {let res = nulllet proj = [MediaStore.Images.Media.DATA]let cursor = contentResolver.query(uri, proj, null, null, null);if (null != cursor && cursor.moveToFirst()) {let column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);res = cursor.getString(column_index);cursor.close();}return res;}// 通过uri 查找出绝对路径function getDataColumn(context, uri, selection, selectionArgs) {let cursor = null;let column = "_data";let projection = [column];cursor = contentResolver.query(uri, projection, selection, selectionArgs, null);if (cursor != null && cursor.moveToFirst()) {let column_index = cursor.getColumnIndexOrThrow(column);return cursor.getString(column_index);}}function isExternalStorageDocument(uri) {return "com.android.externalstorage.documents" == uri.getAuthority() ? true : false}function isDownloadsDocument(uri) {return "com.android.providers.downloads.documents" == uri.getAuthority() ? true : false}function isMediaDocument(uri) {return "com.android.providers.media.documents" == uri.getAuthority() ? true : false}

转化base64

handControllGetBase64(file, callback) {//h5不可用uni.saveFile({tempFilePath: file,success: (saveFile) => {//pathToBase64为uniapp 插件市场的插件内方法pathToBase64(saveFile.savedFilePath).then(base64 => {//用完就删uni.removeSavedFile({filePath: saveFile.savedFilePath});//返回callback(base64);})},fail: (err) => {console.log(err)}});},

附件的预览

// 附件预览previewFile(obj) {let that = thislet path = ''if (obj.path) {uni.openDocument({filePath: obj.path,success(res) {},fail(res) {uni.showToast({title: '无法打开的文件类型'})}})} else {let path = ''let url = ‘xxx’uni.downloadFile({url: url,header: {'Content-Type': 'application/json','Accept': 'application/json','charset': 'UTF-8'},success: function(res) {if (res.statusCode == 200) {path = res.tempFilePath;uni.openDocument({filePath: path,success(res) {},fail(res) {uni.showToast({title: '无法打开的文件类型',icon: 'none'})}})} else {uni.showToast({title: '下载附件失败',icon: 'none'})}}})}},

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。