添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1.图片插件生成base64

生成base64,可以通过一些插件会给你生成,自己需要生成的话可以使用 ReaderFile的readAsDataURL()来转换

 var reader = new FileReader();
        reader.readAsDataURL(inpFile.files[0]);
        reader.onload = function () {
        baseData = reader.result;
        console.log("🚀 ~ file: 图片:", baseData); //获取到base64格式图片

2.base64转换file

base64转换有多种方法,就不一一列出,直接上代码

import { Base64 } from 'js-base64'
 * 将base64转换为文件
 * @param dataurl  base64编码
 * @param filename  file name
 * @returns
export const dataURLtoFile = (base64Str: any, fileName: any) => {
  const arr = base64Str.split(',')
  const mime = arr[0].match(/:(.*?);/)[1] // base64解析出来的图片类型
  const bstr = Base64.dencode(arr[1]) // 对base64串进行操作,去掉url头,并转换为byte   atob为window内置方法
  let len = bstr.length
  const ab = new ArrayBuffer(len) // 将ASCII码小于0的转换为大于0
  const u8arr = new Uint8Array(ab) //
  while (len--) {
    u8arr[len] = bstr.charCodeAt(len)
  // 创建新的 File 对象实例[utf-8内容,文件名称或者路径,[可选参数,type:文件中的内容mime类型]]
  return new File([u8arr], fileName, {
    type: mime,

上面代码需要注意:针对base64解码,可以使用 atob() 方法来进行解码,但这是window方法,在react-native不起作用。可以使用 js-base64 插件来代替。

3.上传文件

上传接口根据自己接口来判断

    // result 是小编当前使用的签名插件 react-native-signature-capture 
    // 会返回参数 {encoded: base64编码, pathName: 文件路径}
  _onSaveEvent = async (result: any) => {
    const fd = new FormData()
    // base64转换file
    const file = dataURLtoFile(
      `data:image/png;base64,${result.encoded}`,
      `signature_${Date.now()}.png`,
    fd.append('file', file)
    // 调用接口
    const dataFileUrl = await this.props.handleFileUrl(fd)
    const tokenUrl = await this.props.addSasTokenOnUrl(dataFileUrl.url)
    console.log('🚀 ~ 上传文件 === ', dataFileUrl)
    console.log('🚀 ~ 下载文件 === ', tokenUrl)

4.上传报错

这个报错真的让我这个菜鸟头晕,但我经过三天三夜的战斗才发现一点问题,一点!!

在web使用new File()生成新的文件类型打印输出是没问题,但是在react-native输出出来的是类似于object的类型,所以导致文件上传缺失,不成功

解决方法:

生成新的文件类型并添加

    // result 是小编当前使用的签名插件 react-native-signature-capture 
    // 会返回参数 {encoded: base64编码, pathName: 文件路径}
  _onSaveEvent = async (result: any) => {
    // 文件类型
    const file = {
      uri: result.pathName,
      type: 'multipart/form-data',
      name: `signature_${Date.now()}.png`,
    const fd = new FormData()
    // base64转换file
    // const file = dataURLtoFile(
    //   `data:image/png;base64,${result.encoded}`,
    //   `signature_${Date.now()}.png`,
    fd.append('file', file)
    // 调用接口
    const dataFileUrl = await this.props.handleFileUrl(fd)
    const tokenUrl = await this.props.addSasTokenOnUrl(dataFileUrl.url)
    console.log('🚀 ~ 上传文件 === ', dataFileUrl)
    console.log('🚀 ~ 下载文件 === ', tokenUrl)
                                    推荐使用react-native-fileupload - 轻松实现原生文件上传
项目地址:https://gitcode.com/PhilippKrone/react-native-fileupload
在移动应用开发文件上传功能是不可或缺的。今天,我们向您推荐一款强大的开源库——react-native-fileupload,它为React Native开发者提供了简单易用的接口,轻松实...
                                    React Native 文件上传组件教程
 react-native-file-uploadA plugin for file upload on react-native项目地址:https://gitcode.com/gh_mirrors/re/react-native-file-upload 项目介绍
react-native-file-upload 是一个用于 React Native ...
选了文件就要上传,这篇就记录一下文件上传
这是antd的一个UI库,不知道的同学自行去学习,选择图片和拍照有时间在补上,他们的上传方法是同一个,还包含了一点点RN和webview的交互以及组件封装调用
https://rn.mobile.an...
                                    折腾了一段时间,发现在strapi上传文件是出名的困难,而且官方文档上传文件教程也没有针对react native的部分,仅仅通过它的nodejs和browser代码在rn套用行不通,其还有些细节的纰漏。开始前请确保自己已经按照官方教程安装好strapi提示:以下是本篇文章正文内容,下面案例可供参考。
                                    最近项目使用到了图片上传功能,作为前端开发对此应该不陌生,正常来说图片会有一个单独存储的服务,例如现在公司使用minio统一集管理,直接部署在docker上面非常方便,下面记录一下使用经历过的图片上传
1.base64直接上传
这种base64直接上传给后端,然后后端拿到数据之后就能自行处理,一般前端会对base64数据前面拼接"data:image/jpeg;base64," + base64数据;代表图片格式,其余后端自行处理,相对来说这种方式对前端更加友好,上传方式跟普通数据上传...
React Native has a binaryToBase64 util that accepts ArrayBuffer for base64 conversions:
var utf8 = require(‘utf8’);
var binaryToBase64 = require(‘binaryToBase64’);
var text = ‘foo © bar ???? baz’;
var bytes = utf8.encode(text);
var encoded = binaryToBas
react-native bundle --entry-file index.js --bundle-output ./out/xxxxxx.jsbundle --platform ios --assets-dest ./out --dev false
二.android平台:
react-native bundle --platform android --dev f...
                                    推荐项目:React Native Background Upload
 react-native-background-uploadUpload files in your React Native app even while it's backgrounded.  Supports Android and iOS, including camera roll assets.项目地址:http...