如何创建 POST 请求以从本地路径将文件存储在服务器上 - React Native

Posted

技术标签:

【中文标题】如何创建 POST 请求以从本地路径将文件存储在服务器上 - React Native【英文标题】:How to create a POST request to store file on server from local path - React Native 【发布时间】:2021-09-23 07:23:09 【问题描述】:

我正在尝试使用 React Native 中的 REST 服务将 pdf 文件从本地设备保存到我的服务器。就我而言,当我单击“保存”按钮时,文件存储在我想同时保存在我的服务器上的临时文件路径中。

 <View style=styles.button>
                            <Button
                                onPress=() => 
                                    // Save Document
                                    this._viewer.saveDocument().then((filePath) => 
                                        console.info('saveDocument:', filePath);
                                      );
                                
                                title="Save"
                            />
                        </View>

filePath 是一个临时路径 - 'saveDocument:', '/data/user/0/nativetemplate/cache/Test.pdf' 我想将此文件上传到服务器。我是 React Native 的新手,我对实现感到困惑。 我知道我应该使用 fetch(),但我应该调用一个单独的方法来做到这一点吗?如何在按钮 onPress 操作的同时触发此操作?

fetch('https://example.com/data', 
  method: 'POST',
  headers: 
    Accept: 'application/json',
    'Content-Type': 'application/json'
  ,
  body: JSON.stringify(
    filePath: '/data/user/0/nativetemplate/cache/Test.pdf',
  )
);

我实际上想发送文件内容以更新服务器上的文件,我可以直接发送临时(缓存)文件路径还是需要先从缓存中检索文件?如果是这样,我如何从这个路径中检索文件?

【问题讨论】:

您应该必须使用 multipart/form-data 使用 api 调用将文件发送到服务器。 【参考方案1】:

您需要使用 FormData 将文件上传到服务器

const file = 
    uri : filePath,
    type : fileType,
    name : filename
  
  var formData = new FormData()
  formData.append('filePath', file) // filePath -> your param for the file

然后进行服务器调用

const response = await fetch(serverurl, 
    method: "POST",
    body:formData
  )

【讨论】:

以上是关于如何创建 POST 请求以从本地路径将文件存储在服务器上 - React Native的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何通过CURL上传文件

动态路径创建

如何配置 Capistrano 以从本地 Git 存储库进行部署?

有没有办法在nodeJS POST API请求中指定本地文件系统路径,能够使用curl而不是nodejs进行api调用

如何将纹理存储模式设置为“私有”以从“CVMetalTextureCacheCreateTextureFromImage”创建纹理?

如何自动化文件路径以从多个 csv 文件的列中获取平均值?