微信小程序:文本读写与网络请求

这篇具有很好参考价值的文章主要介绍了微信小程序:文本读写与网络请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、本地用户文件读写:

1.普通接口操作文件:

(1)写入文件内容:

const fm = wx.getFileSystemManager()   // 获取文件管理器
fm.writeFileSync(`${wx.env.USER_DATA_PATH}/文件名.txt`,  '文件内容', 'utf8')  //在本地用户目录创建文件(不存在时),并写入内容

(2)读取文件内容:

const fm = wx.getFileSystemManager() // 获取文件管理器
//1>同步方式读取:
try {
  const fileContent = fm.readFileSync(`${wx.env.USER_DATA_PATH}/文件名.txt`, 'utf8', 0)
  console.log("onLoad >> 读文件成功,文件内容: " + fileContent)
} catch(exception) {
  console.log('onLoad >> 读文件失败, 异常消息: ', exception)
}
//2>异步方式读取:
fm.readFile({filePath: `${wx.env.USER_DATA_PATH}/文件名.txt`, encoding: 'utf8',
  success(response) {
    console.log("onLoad >> 读文件成功,文件内容: " + response.data)
  },
  fail(exception) {
    console.log('onLoad >> 读文件失败, 异常消息: ', exception)
  }
})

2.FD接口操作文件(适用大量文件操作):

(1)写入文件内容:

const fm = wx.getFileSystemManager() // 获取文件管理器
var fd = fm.openSync({filePath: `${wx.env.USER_DATA_PATH}/文件名.txt`, flag: "w+"}) // 打开文件,a+为读取和追加写入方式打开、w+为读取和截断写入方式打开
var content = 'FD接口方式-文件内容'
fm.writeSync({data: content, fd: fd, encoding: 'utf8', length: content.length, position: 0}) // 写入文件内容
fm.closeSync({fd: fd}) // 关闭文件

(2)读取文件内容:

const fm = wx.getFileSystemManager() // 获取文件管理器
var arrayBuffer = new ArrayBuffer(1024);
//1>同步方式读取:
try {
  var fd = fm.openSync({filePath: `${wx.env.USER_DATA_PATH}/文件名.txt`, flag: "a+"}) // 打开文件,a+为读取和追加写入方式打开、w+为读取和截断写入方式打开
  fm.readSync({fd: fd,
    arrayBuffer: arrayBuffer,  //数据写入的缓冲区
    length: 1024               //读取的字节数,默认0
  }) // 读取文件内容
  var enc = new TextDecoder("utf-8");
  var fileContent = enc.decode(arrayBuffer) //将ArrayBuffer转为字符串
  console.log("onShow >> 读文件成功,文件内容: " + fileContent)
  fm.closeSync({fd: fd}) // 关闭文件
} catch(exception) {
  console.log('onShow >> 读文件失败, 异常消息: ', exception)
}
//2>异步方式读取:
fm.open({
  filePath: `${wx.env.USER_DATA_PATH}/文件名.txt`,
  flag: 'a+',
  success(response) {
    fm.read({
      fd: response.fd,
      arrayBuffer: arrayBuffer,
      length: 1024,
      success(response) {
        var enc = new TextDecoder("utf-8");
        var fileContent = enc.decode(arrayBuffer) //将ArrayBuffer转为字符串
        console.log("onShow >> 读文件成功,文件内容: " + fileContent)
      }
    })
  },
  fail(exception) {
    console.log('onShow >> 读文件失败, 异常消息: ', exception)
  }
})

二、网络请求:

配置服务器域名:

进入以下地址,在服务器域名 -> 点击修改按钮, 添加"request合法域名、uploadFile合法域名、downloadFile合法域名":

小程序

1.接口请求(POST/GET):

var doRequest = function (url, { isPost=true }) {
  console.log("开始接口请求 >>")
  wx.request({
    url: url, //请求URL
    data: { //请求参数
      key1: 'value1'
    },
    header: { //头字段
      'content-type': 'application/json'
    },
    method: isPost ? 'POST' : 'GET', //请求方法
    timeout: 15000, //超时时间
    enableHttp2: true, //开启HTTP2
    success(response) { //请求成功
      console.log("接口请求 response HTTP状态码: " + response.statusCode + "  数据: " + response.data)
      if (response.statusCode != 200) return
      //...解析返回的json数据
    },
    fail(response) { //请求失败
      console.log("接口请求 response 错误码: " + response.errno + "  错误信息: " + response.errMsg)
    }
  })
}

2.上传文件:

var doUploadFile = function (url, uploadFilePath) {
  console.log("开始上传文件 >>")
  wx.request({
    url: url, //请求URL
    filePath: uploadFilePath,  //待上传文件路径
    name: 'file', //与后端约定的上传文件key
    formData: { //请求参数
      key1: 'value1'
    },
    header: { //头字段
      'key1': 'value1'
    },
    timeout: 60000, //超时时间
    success(response) { //上传成功
      console.log("上传文件成功 HTTP状态码: " + response.statusCode + "  数据: " + response.data)
      if (response.statusCode != 200) return
      //...解析返回的json数据
    },
    fail(response) { //上传失败
      console.log("上传文件失败 错误信息: " + response.errMsg)
    }
  })
}

3.下载文件:

var doDownloadFile = function (url, saveFilePath) {
  console.log("开始下载文件 >>")
  wx.downloadFile({
    url: url, //请求URL
    filePath: saveFilePath,  //文件本地保存路径,例:wx.env.USER_DATA_PATH + "/a.jpeg"
    header: { //头字段
      'key1': 'value1'
    },
    timeout: 60000, //超时时间
    success(response) { //下载成功,文件路径为:http://usr/a.jpeg
      console.log("下载文件成功 HTTP状态码: " + response.statusCode + "  文件路径: " + saveFilePath)
      if (response.statusCode != 200) return
      //...处理下载完后的逻辑
    },
    fail(response) { //下载失败
      console.log("下载文件失败 错误信息: " + response.errMsg)
    }
  })
}

4.连接WebSocket:文章来源地址https://www.toymoban.com/news/detail-606582.html

var webSocket  = function (wsUrl) {
  console.log("开始连接WebSocket >>")
  wx.connectSocket({
    url: wsUrl,  //WebSocket地址
    header:{ //头字段
      'content-type': 'application/json'
    },
    protocols: ['protocol1'],  //子协议数组
    timeout: 60000,  //超时时间
    success(response) { //连接成功
      console.log("连接WebSocket成功 data: " + response.data)
    },
    fail(response) { //连接失败
      console.log("连接WebSocket失败 错误码: " + response.errno + "  错误信息: " + response.errMsg)
    }
  })
}

到了这里,关于微信小程序:文本读写与网络请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序基于Promise封装发起网络请求

         

    2024年02月17日
    浏览(54)
  • 【微信小程序】挂载网络请求到全局this对象

    《工欲善其事,必先利其器》 有一些常用的东西,如 http 请求、弹窗、错误处理等等,如果在每个页面都引用一遍,会增加不必的代码量,我们可以在 app.js 中对 Page 对象进行简单地封装,从而让 Page 的能力更强。 一、封装原生网络请求 request.js : 二、app.js 引入网络请求,

    2024年02月07日
    浏览(39)
  • iphone/苹果手机 微信小程序 真机调试 网络不通 网络请求失败

    问题:iphone/苹果手机 微信小程序 真机调试 网络请求失败,可以确定的是,真机和开发工具所在电脑肯定是在一个网段的,把蜂窝数据都关了,只保留了WIFI,还是请求不通, 最终参考 微信小程序真机调试报错fail-109:net::ERR_ADDRESS_UNREACHABLE ? 解决,原来是 IOS升级了本地网络权

    2024年02月11日
    浏览(111)
  • 【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

    请求数据,保存数据 需要封装为单独的函数,不然不是异步的 (推荐,可配置不同基础URL的多个实例)

    2024年02月09日
    浏览(42)
  • 【微信小程序】使用 wx.request 方法进行异步网络请求

    在微信小程序中,你可以使用 wx.request 方法进行异步网络请求,并将获取到的列表数据渲染到 UI 上。 首先,在页面的 data 中定义一个数组变量,用于存储获取到的列表数据,例如: 然后,在页面的生命周期函数 onLoad 或需要触发网络请求的函数中,使用 wx.request 方法发送异

    2024年02月16日
    浏览(56)
  • 微信小程序封装网络请求设置超时5min不生效

    背景: 开发微信小程序时,由于有些业务场景特殊,接口返回时间较长,因此使用flyio封装网络请求时将timeout设置为5min。 问题: 设置timeout为5min,发现请求时长超过1min后请求自动断开了。 解决方案: 除了在网络请求那设置,还需要在app.json中设置networkTimeout中的request属性

    2024年01月17日
    浏览(52)
  • 微信小程序之网络数据请求 wx:request的简单使用

    出于安全性方面的考虑,小程序官方对 数据接口的请求 做出了两个限制: 只能请求 HTTPS 类型的接口必须将接口的域名添加到信任列表中 . 在自己的微信小程序开发的后台管理中添加相应的服务器域名,配置步骤: 登录微信小程序管理后台 - 开发 - 开发设置 - 服务器域名

    2024年02月16日
    浏览(41)
  • 微信小程序真机调试网络请求失败或超时的问题

      在使用uniapp开发微信小程序时,开发者工具的模拟器可以正常请求。但是当使用真机调试时会发现,请求已发起,但是控制台一片空白。 过了一会儿就会报错,请求超时。 检查代码和网络连接都正常,当然也勾选了不校验合法域名。 网上搜了半天,没发现相同的问题。

    2024年02月03日
    浏览(97)
  • uniapp及微信小程序封装全局网络请求,弹框和hint提示

    今天分享一下uniapp项目的网络请求如何封装,不知道大家开发微信小程序项目是用什么开发工具,我个人更喜欢用uniapp,无论是从项目扩展方向还是开发效率来说,uniapp都是首选。 1:创建一个项目工具库,http.js 在vite.config.js文件中配置跨域 这样,一个全局网络请求工具就完

    2024年02月06日
    浏览(38)
  • 【微信小程序】一文带你搞懂小程序的页面配置和网络数据请求

    每个小程序页面都有一个 .json 文件,该文件用来对小程序的页面进行配置。 小程序中,每个页面都有自己的.json配置文件,用来对当前页面的窗口外观、页面效果等进行配置。 小程序中,app.json中的 window 节点,可以全局配置小程序中 每个页面 的窗口表现。 如:当在app.js

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包