You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native上传图片到Django时后端获取十六进制字符串而非文件如何解决

问题修复方案

问题的核心原因有两个:React Native 端 FormData 追加文件的格式不符合要求,以及 Django 端取文件的位置错误,按以下步骤修复即可:

React Native 端修改

  • 修正 createFormData 方法中文件追加逻辑,不能直接将图片对象传入 append 方法,需要显式指定 uri、name、type 三个属性:
const createFormData = (photos, body = {}) => {
  const data = new FormData();
  if (photos.length > 1) {
    console.log(photos[1])
    const photo = photos[1]
    // 按要求构造文件对象
    data.append("images", {
      uri: photo.uri,
      name: photo.fileName,
      type: photo.type
    });
  }

  Object.keys(body).forEach((key) => {
    data.append(key, body[key]);
  });

  return data;
};
  • 检查 constructConfig 方法的请求头配置,确保指定了 multipart/form-data 类型,不要手动设置 boundary,由请求客户端自动生成即可:
// constructConfig 示例配置
const constructConfig = async () => {
  return {
    headers: {
      'Content-Type': 'multipart/form-data',
      // 其他业务自定义头,比如 Authorization 等
    }
  }
}
  • 修正 onAddButtonClick 里的逻辑错误:你在请求发起后直接同步调用了 setLoading(false),会导致加载状态直接消失,删除该行即可,只保留 then 和 catch 里的状态修改。

Django 端修改

  • 上传的文件不会出现在 request.data 中,需要从 request.FILES 中获取:
    • 单文件获取:request.FILES.get('images')
    • 多文件获取:request.FILES.getlist('images')
  • 如果你使用 Django REST Framework,需要在对应的视图类中指定解析器,支持表单和文件解析:
from rest_framework.parsers import MultiPartParser, FormParser
from rest_framework.views import APIView

class YourPostView(APIView):
    parser_classes = (MultiPartParser, FormParser,)
    # 剩余视图逻辑

内容的提问来源于stack exchange,提问作者user12314098

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:15:03