【问题标题】:using fetch to upload an image, I get a 200 status, but the image does not upload使用 fetch 上传图片,我得到 200 状态,但图片没有上传
【发布时间】:2018-07-26 18:59:04
【问题描述】:

在我的 React Native 应用程序中,我想使用 fetch 将图像文件上传到我的服务器。我收到 200 响应,但图片没有上传。我的 fetch 看起来像...

let url = Config.base_url + '/photos'
let filename = this.state.image.substr(this.state.image.lastIndexOf('/') + 1)
// filename: something.jpg

 let data = new FormData()
 data.append('photo', {
   uri: this.state.image,
   type: 'image/jpeg',
   name: filename
 })

 fetch(url, {
    method: 'POST',
    body: data,
    headers: {
      Accept: 'application/json'
    }
  }).then(res => {
    console.log(res)
  })

在 Apache 错误日志中没有错误。

我的访问日志中的条目看起来像...

123.45.67.89 - - [26/Jul/2018:18:47:30 +0000] "GET /photos/ HTTP/1.1" 200 649 "-" "Ally/1 CFNetwork/901.1 Darwin/17.7.0"

【问题讨论】:

    标签: javascript apache react-native fetch


    【解决方案1】:

    如果不查看您的服务器代码,这有点难以判断,但您应该检查一些事项。

    1. 您的访问日志显示“GET”,尽管您的代码显示它正在使用“POST”。您确定这是正确的日志条目吗?

    2. 在您的服务器中,在接收照片的函数中,您可以记录传入的请求吗?尝试记录身体并查看它是否是您期望看到的。

    3. 您能否从其他服务(如 cURL)或应用程序(如 this)手动发送请求?如果可行,那么问题在于您如何发送请求。如果这不起作用,则可能是您的服务器存在问题。

    【讨论】:

    • 谢谢尼尔。在这种情况下,我可能对 fetch 有错误的期望。我在想我可以使用 fetch 将文件直接移动到目标目录中。但听起来我需要服务器上的脚本来处理请求。我可能需要更多地搜索代码示例。我有同样的想法:访问日志中的 GET 与 POST ——是的,这是正确的条目。可能是我尝试使用 fetch 将文件直接移动到服务器的副产品(就像我使用 scp 一样)。
    • 是的,通常您需要一些代码来接收消息,解析数据,然后保存文件。除非您使用的是预先构建的 API 或库,它们已经为您处理了这些内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多