微信小程序上传图片后立即预览或替换页面上的图片

在微信小程序中,如果你想在用户选择并上传图片后立即预览或替换页面上的图片,你可以通过以下步骤实现:

  1. 使用 wx.chooseImage 获取图片的临时路径。
  2. 将获取到的临时路径存储在页面的数据中,以便在页面上显示。
  3. 使用 wx.uploadFile 将图片上传至服务器。
  4. 服务器处理图片并返回新的图片 URL。
  5. 将服务器返回的图片 URL 更新到页面数据中,以更新页面上的图片。

以下是一个具体的示例代码:

 

Javascript

1Page({
2  data: {
3    imageUrl: '', // 初始化图片路径为空
4  },
5
6  // 选择图片
7  chooseImage: function() {
8    let that = this;
9    wx.chooseImage({
10      count: 1, // 选择图片的数量
11      sizeType: ['original', 'compressed'], // 原图或压缩图
12      sourceType: ['album', 'camera'], // 相册或相机
13      success(res) {
14        // 返回选定照片的本地文件路径列表
15        const tempFilePaths = res.tempFilePaths;
16
17        // 更新页面数据,显示图片
18        that.setData({
19          imageUrl: tempFilePaths[0]
20        });
21
22        // 开始上传图片
23        that.uploadImage(tempFilePaths[0]);
24      }
25    });
26  },
27
28  // 上传图片
29  uploadImage: function(filePath) {
30    wx.uploadFile({
31      url: 'https://example.com/upload', // 服务器上传地址
32      filePath: filePath,
33      name: 'file', // 服务器接收上传文件的参数名
34      formData: {}, // 可携带额外的表单数据
35      success(res) {
36        // 服务器返回的 JSON 数据
37        const data = JSON.parse(res.data);
38
39        // 更新页面数据,使用服务器返回的图片 URL
40        if (data && data.imageUrl) {
41          that.setData({
42            imageUrl: data.imageUrl
43          });
44        }
45      },
46      fail(error) {
47        console.error('上传失败', error);
48      }
49    });
50  }
51});

在页面的 WXML 结构中,你可以像这样使用 image 标签来显示图片:

 

Html

1<!-- 页面结构 -->
2<image src="{{imageUrl}}" mode="aspectFit"></image>

当用户选择图片后,chooseImage 方法会更新 imageUrl 的值,这将立即在页面上显示图片。然后,当图片上传并从服务器返回新的 URL 后,uploadImage 方法会再次更新 imageUrl,页面上的图片会自动更新为服务器返回的新 URL 对应的图片。

请确保你的服务器能够正确处理图片上传请求,并返回新的图片 URL。如果服务器端返回的不是 JSON 数据,请相应地调整 success 回调函数中的解析逻辑。

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Uniapp 中实现微信小程序的多张图片上传,可以按照以下步骤进行操作: 1. 在页面中创建一个按钮,用于触发选择图片的操作。 2. 在按钮的点击事件中,调用 `uni.chooseImage` 方法来选择图片。这个方法会返回选择的图片的临时文件路径。 3. 将选择的图片路径保存在一个数组中。 4. 在页面中展示已选择的图片,可以使用 `v-for` 指令来遍历已选择的图片数组,使用 `uni.previewImage` 方法来预览图片。 5. 创建一个提交按钮,在点击事件中调用 `uni.uploadFile` 方法,将选择的图片上传到服务器。 下面是一个示例代码: ```html <template> <view> <button @tap="chooseImage">选择图片</button> <view v-for="(image, index) in imageList" :key="index"> <image :src="image" mode="aspectFit" @tap="previewImage(index)" /> </view> <button @tap="uploadImages">上传图片</button> </view> </template> <script> export default { data() { return { imageList: [], // 存放已选择的图片路径 }; }, methods: { chooseImage() { uni.chooseImage({ count: 9, // 最多可以选择的图片张数 success: (res) => { // 将选择的图片路径保存到 imageList 数组中 this.imageList = res.tempFilePaths; }, }); }, previewImage(index) { uni.previewImage({ urls: this.imageList, // 需要预览图片路径列表 current: this.imageList[index], // 当前显示图片链接 }); }, uploadImages() { // 遍历已选择的图片路径,逐个上传 this.imageList.forEach((image) => { uni.uploadFile({ url: 'https://your-upload-api-url', // 上传图片的接口地址 filePath: image, name: 'file', // 上传文件对应的 key 值 formData: {}, // 其他额外的参数 success: (res) => { console.log(res.data); }, }); }); }, }, }; </script> ``` 请注意替换示例代码中的上传接口地址为你自己的接口地址。另外,需要在 `manifest.json` 文件中添加相应的权限配置,以允许选择图片上传文件。 希望这个示例对你有帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值