ueditor跨域上传远程图片文件

ueditor上传远程图片,也就是复制了一个网络图片,然后粘贴到ueditor工作区后形成的一个上传动作。那么如果页面和接口都在同一个域名下面,那么上传也就简单多了,使用默认上传动作就可以。

如果接口和uediotr页面不在同一个域名下面,就涉及到了一个跨域的动作,因为ueditor的单图上传使用的是表单加iframe回调的这么一个方式,所以ueditor没有提供解决方法,也就是说让我们使用多图的post上传方式来代替单图上传。

多图上传使用的是post请求上传的方式,所以我们在服务器接口部分设置允许跨域就和同域名下的效果一样。

那么上传远程图片,也就是抓取远程图片的时候,使用的上传方式就是jsonp的方式上传,虽然返回的数据都是一样的,但是在返回的结构上要支持jsonp的格式,显然也是一个get请求。

下面是使用koa来接收ueditor抓取远程图片的接口。

// action是用来判断ueditor上传的动作,这里默认是catchimage
let {action, callback} = ctx.request.query

// get请求的参数
let query = ctx.request.query

// 远程图片列表,一个图片默认是一个字符串,这里需要处理一下
let imgUrlList = query['source[]']
let newImageUrlList = []
newImageUrlList = newImageUrlList.concat(imgUrlList)
let list = []
for (let i = 0; i < newImageUrlList.length; i++) {
    let imgUrl = newImageUrlList[i]

    // 这里的downloadFile和writeUpload表示先下载,再上传到我们的存储的这么一个动作
    let fileInfo = await downloadFile(imgUrl)
    let newFilename = await writeUpload(fileInfo.path, fileInfo.extname)
    
    // ueditor处理catchimage的返回结果
    list.push({
        url: `${newFilename}`,
        source: imgUrl,
        state: 'SUCCESS'
    })
}
let result = JSON.stringify({
    "state": "SUCCESS",
    "list": list
})
// 返回支持jsonp格式 callback('返回的字符串')
ctx.body = `${callback}(${result})`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值