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

一、本地用户文件读写:

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:

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)
    }
  })
}

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值