当前位置:首页 > React

react native 如何上传照片

2026-03-10 21:32:16React

上传照片的基本流程

React Native 中上传照片通常涉及选择图片、获取图片数据、发送到服务器三个步骤。可以使用 react-native-image-pickerexpo-image-picker 等库实现。

安装依赖

使用 react-native-image-picker

yarn add react-native-image-picker
# 或
npm install react-native-image-picker

对于 iOS,需在 Podfile 所在目录执行:

react native 如何上传照片

npx pod-install

配置权限

Android 需在 AndroidManifest.xml 添加:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

iOS 需在 Info.plist 添加:

react native 如何上传照片

<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册上传照片</string>
<key>NSCameraUsageDescription</key>
<string>需要相机权限拍摄照片</string>

选择图片代码示例

import {launchImageLibrary} from 'react-native-image-picker';

const options = {
  mediaType: 'photo',
  quality: 0.8,
};

const pickImage = async () => {
  const result = await launchImageLibrary(options);
  if (result.didCancel) {
    console.log('用户取消选择');
  } else if (result.errorCode) {
    console.log(result.errorMessage);
  } else {
    const uri = result.assets[0].uri;
    const type = result.assets[0].type || 'image/jpeg';
    const name = result.assets[0].fileName || `photo_${Date.now()}.jpg`;
    return {uri, type, name};
  }
};

上传到服务器

使用 FormDatafetch 上传:

const uploadImage = async (image) => {
  const formData = new FormData();
  formData.append('file', {
    uri: image.uri,
    type: image.type,
    name: image.name,
  });

  try {
    const response = await fetch('https://your-api-endpoint.com/upload', {
      method: 'POST',
      body: formData,
      headers: {
        'Content-Type': 'multipart/form-data',
      },
    });
    return await response.json();
  } catch (error) {
    console.error('上传失败:', error);
  }
};

完整调用示例

const handleUpload = async () => {
  const image = await pickImage();
  if (image) {
    const result = await uploadImage(image);
    console.log('上传结果:', result);
  }
};

替代方案:Expo 项目

使用 expo-image-picker

expo install expo-image-picker

代码示例:

import * as ImagePicker from 'expo-image-picker';

const pickImage = async () => {
  const result = await ImagePicker.launchImageLibraryAsync({
    mediaTypes: ImagePicker.MediaTypeOptions.Images,
    allowsEditing: true,
    quality: 0.8,
  });
  if (!result.canceled) {
    return result.assets[0];
  }
};

注意事项

  • Android 11+ 需要使用 READ_EXTERNAL_STORAGE 替代 WRITE_EXTERNAL_STORAGE
  • 真实项目中建议添加上传进度指示器
  • 大文件上传应考虑分片上传策略
  • 服务端需要处理 multipart/form-data 格式的请求

分享给朋友:

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

如何启动react

如何启动react

安装Node.js 确保系统已安装Node.js(建议使用LTS版本),可通过官网下载并安装。安装完成后,在终端运行以下命令验证版本: node -v npm -v 创建React项目 使用官方工具…