uni-admin wangeditor
add.vue
<template>
<view class="uni-container">
<uni-forms ref="form" :model="formData" validateTrigger="bind">
<uni-forms-item name="author" label="作者">
<uni-easyinput placeholder="请输入作者名" v-model="formData.author" trim="end"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="avatar" label="封面大图">
<uni-file-picker return-type="object" v-model="formData.avatar"></uni-file-picker>
</uni-forms-item>
<uni-forms-item name="title" label="标题" required>
<uni-easyinput placeholder="标题" v-model="formData.title" trim="both"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="content" label="文章内容" required>
<div id="div1"></div>
</uni-forms-item>
<uni-forms-item name="article_status" label="文章状态">
<uni-data-checkbox v-model="formData.article_status" :localdata="formOptions.article_status_localdata"></uni-data-checkbox>
</uni-forms-item>
<uni-forms-item name="view_count" label="阅读量">
<uni-easyinput placeholder="阅读量" type="number" v-model="formData.view_count"></uni-easyinput>
</uni-forms-item>
<uni-forms-item name="is_essence" label="推荐">
<switch @change="binddata('is_essence', $event.detail.value)" :checked="formData.is_essence"></switch>
</uni-forms-item>
<uni-forms-item name="publish_date" label="发表时间">
<uni-datetime-picker return-type="timestamp" v-model="formData.publish_date"></uni-datetime-picker>
</uni-forms-item>
<view class="uni-button-group">
<button type="primary" class="uni-button" style="width: 100px;" @click="submit">提交</button>
<navigator open-type="navigateBack" style="margin-left: 15px;">
<button class="uni-button" style="width: 100px;">返回</button>
</navigator>
</view>
</uni-forms>
</view>
</template>
<script>
import { validator } from '../../js_sdk/validator/xzs_news.js';
import E from 'wangeditor'
const db = uniCloud.database();
const dbCmd = db.command;
const dbCollectionName = 'xzs_news';
let editor=null
function getValidator(fields) {
let result = {}
for (let key in validator) {
if (fields.includes(key)) {
result[key] = validator[key]
}
}
return result
}
export default {
data() {
let formData = {
"author": "",
"avatar": null,
"title": "",
"content": "",
"article_status": 1,
"view_count": 55,
"is_essence": null,
"publish_date": null
}
return {
formData,
formOptions: {
"article_status_localdata": [
{
"value": 0,
"text": "草稿箱"
},
{
"value": 1,
"text": "已发布"
}
]
},
rules: {
...getValidator(Object.keys(formData))
}
}
},
onReady() {
this.$refs.form.setRules(this.rules)
this.onWangEdit()
},
methods: {
//初始化wangedit
onWangEdit(){
editor =new E('#div1');
editor.config.zIndex=0
editor.config.onblur = (newHtml)=> {
this.formData.content =newHtml
}
editor.config.customUploadImg = function (resultFiles, insertImgFn) {
resultFiles.forEach(item=>{
let path = URL.createObjectURL(item)
let name = item.name;
uniCloud.uploadFile({
filePath:path,
cloudPath:name
}).then(res=>{
insertImgFn(res.fileID)
})
})
}
editor.create()
},
/**
* 验证表单并提交
*/
submit() {
uni.showLoading({
mask: true
})
this.$refs.form.validate().then((res) => {
return this.submitForm(res)
}).catch(() => {
}).finally(() => {
uni.hideLoading()
})
},
/**
* 提交表单
*/
submitForm(value) {
// 使用 clientDB 提交数据
return db.collection(dbCollectionName).add(value).then((res) => {
uni.showToast({
title: '新增成功'
})
this.getOpenerEventChannel().emit('refreshData')
setTimeout(() => uni.navigateBack(), 500)
}).catch((err) => {
uni.showModal({
content: err.message || '请求服务失败',
showCancel: false
})
})
}
}
}
</script>
前端显示插入图片错误,然而云服务却接受到了图片,只是前端这了图片没有回显出来
1 个回复
Ask小助手 - Ask社区AI助手
你遇到的问题是:wangeditor 插入图片时,云服务已收到图片,但前端未回显。根据你提供的代码和现象,问题出在
customUploadImg中的insertImgFn(res.fileID)这一步未能正确触发回显。✅ 问题原因分析
你使用了:
然后:
但
URL.createObjectURL(item)返回的是一个 浏览器临时 blob URL,这个 URL 在uniCloud.uploadFile中并不适用,尤其在非 H5 平台(如 App、小程序)中会导致上传失败或图片无法回显。✅ 正确做法
应使用
uni.chooseImage或uni.chooseMedia获取本地临时路径(tempFilePath),再上传:✅ 建议修改点
URL.createObjectURL,它仅适用于浏览器环境。item.path是本地临时路径,例如通过uni.chooseImage获取。res.fileID是否为有效云存储地址,可在控制台打印确认。✅ 示例:结合
uni.chooseImage使用✅ 总结
你当前的问题是由于使用了不适用于 uni-app 平台的
URL.createObjectURL导致上传成功但无法回显。建议改为使用uni.chooseImage获取本地路径,再上传并插入图片。如需进一步支持,请确认你当前运行的平台(H5?App?小程序?),不同平台路径处理方式略有差异。
要回复问题请先登录或注册
公告
更多>相关问题