首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >上传响应本机中的blob/文件,内容为空。

上传响应本机中的blob/文件,内容为空。
EN

Stack Overflow用户
提问于 2020-08-24 17:03:09
回答 1查看 3.6K关注 0票数 3

我能够成功地从我的网页浏览器上传一个带有适当内容的blob,但是当我从react本地上传时,上传文件是空的。以下是代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    async function doit() {
        const data = new FormData();
        data.append('str', 'strvalue');
        data.append(
          'f',
          new File(['foo'], 'foo.txt', {type: 'text/plain'}),
        );

        await fetch('http://localhost:3002/upload', {
            method: 'POST',
            body: data
          });
    }

然而,执行这同样的代码反应-本机,它上传,但文件是空的。

下面是我用来测试这个的node.js服务器。加载http://localhost:3002会给你一个名为“上传它”的按钮。点击它可以完成网络上传。结果的截图如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var multiparty = require('multiparty');
var http = require('http');

http
  .createServer(function (req, res) {
    if (req.url === '/upload' && req.method === 'POST') {
      console.log('multipart here');
      var form = new multiparty.Form();

      form.parse(req, function (err, fields, files) {
        console.log(require('util').inspect({ fields, files }, false, null, true));
        res.setHeader('Content-Type', 'application/json');
        res.end(JSON.stringify({ bar: true }));
      });

      return;
    }

    console.log('here');
    // show a file upload form
    res.writeHead(200, { 'content-type': 'text/html' });
    res.end(
        `
        <script>
        async function doit() {
            const data = new FormData();
            data.append('str', 'strvalue');
            data.append(
              'f',
              // new File([new Blob(['asdf'], {type : 'text/plain'})], 'filename.txt'),
              new File(['foo', 'what', 'the', 'hell'], 'foo.txt', {type: 'text/plain'}),
            );

            const res = await fetch('http://localhost:3002/upload', {
                method: 'POST',
                body: data
              });
              console.log(JSON.stringify(res, null, 4));
        }
        document.addEventListener('DOMContentLoaded', () => {
            document.getElementById('b').addEventListener('click', doit, false)
        }, false);
        </script>
        <button type="button" id="b">upload it</button>
        `
    );
  })
  .listen(3002);

从web浏览器中我们看到节点服务器记录这一点,注意文件大小是14。

但是,从react-本机中我们看到文件大小为0:

EN

回答 1

Stack Overflow用户

发布于 2020-08-24 18:37:47

最近,我也遇到了同样的问题,当时我把一张从react本地应用程序的图片发到服务器上。但是,我能够通过将文件的名称和类型附加到formData实例来使其工作。

在这里,uri参数作为一个路由参数从上一个屏幕传递给uploadImageAsync

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const postShoutHandler = async () => {
  setShoutUploadStatus("Started Upload");
  const response = await uploadImageAsync(route.params.captures);
  const uploadResult = await response.json();
  if (uploadResult === "Upload successful") {
    setShoutUploadStatus("Success");
    navigation.navigate("Home");
  } else {
    setShoutUploadStatus("Failed");
  }
};
/* <--Upload image function --> */
const uploadImageAsync = (uri: string) => {
  const apiUrl = "https://www.yourserver.com/image";
  let uriParts = uri.split(".");
  let fileType = uriParts[uriParts.length - 1];
  let formData = new FormData();
  formData.append("img", {
    uri,
    name: `photo.${fileType}`,
    type: `image/${fileType}`,
  });

  formData.append("description", "HEY");
  let options = {
    method: "POST",
    body: formData,
    headers: {
      Accept: "application/json",
      "Content-Type": "multipart/form-data",
      Authorization: "Bearer " + accessToken,
    },
  };
  return fetch(apiUrl, options);
};
/* <--Upload image function --> */

这是图像配置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 const photoData = await camera.takePictureAsync({
      base64: true,
      exif: false,
    });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63570616

复制
相关文章
MATLAB截断数组
s1 = randi([400, 3000],189,1);s1 = sort(s1);s1(1,1) = 400;s1(189,1) = 3000;s1 = s1/1000;lambda = s1;%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到100的元素%取1到10
狼啸风云
2019/04/09
1.6K0
核心价值观编码器【matlab版】
在吾爱破解论坛上闲逛的时候发现一款名叫密码学工具的小软件,感觉不错就下载了下来。在密码工具箱的Browser栏下发现了一个名叫核心价值观编码的小工具,其功能就是将中英文字符用核心价值的12个词语来编码。温故而知新,和大家伙一起来温习一下社会主义核心价值观:
巴山学长
2021/12/02
1.3K0
核心价值观编码器【matlab版】
matlab 单元数组和元胞数组
本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面消息对国内各个高校和业界影响很大。但是我们作为技术人员,更是要奋发努力,拼搏上进,学好技术,才能师夷长技以制夷,为中华之崛起而读书!
演化计算与人工智能
2020/08/14
1.8K0
MATLAB-数组
之前,我们讨论了很多关于MATLAB向量和矩阵的知识,在本章中,我们将讨论多维数组。在MATLAB中所有的数据类型的变量是多维数组,向量是一个一维阵列,矩阵是一个二维数组。
用户9925864
2022/07/27
1.1K0
截断数组
Original Link 思想: 前缀和。 特殊情况: 当数组元素小于三个时,无解。 当该数组所有数之和不为 3 的整数倍时,无解。 设数组均分的值为 res,循环遍历前缀和数组 a。 设 i 为分割点,若 a[i] == res,说明将 i 作为分割点有可能成立,记录分割点数量为 cnt ++。 设 n - i + 1 为第二个分割点,若 a[n] - a[n - i + 1] == res,则说明该分割点可以与 i 之前的所有分割点进行分割数组,记录分割方案为 ans += cnt。 代码: #
浪漫主义狗
2023/02/21
2.2K0
截断数组
数据范围 前六个测试点满足 1≤n≤10 。 所有测试点满足 1≤n≤105 ,−10000≤ai≤10000 。
凡尘扰凡心
2023/02/27
7410
截断数组
截断梯度
强非线性函数往往倾向于非常大或非常小幅度的梯度。这导致的困难是,当参数梯度非常大时,梯度下降的参数更新可以将参数抛出很远,进入目标函数较大的区域,到达当前解所做的努力变成了无用功。梯度告诉我们,围绕当前参数的无穷小区域内最速下降的方向,这个无穷小区域之外,代价函数可能开始沿曲线背面而上。更新必须被选择为足够小,以避免过分穿越向上的曲面。我们通常使用衰减足够慢的学习率,使连续的步骤具有大致相同的学习率。适合于一个相对线性的地形部分的步长经常在下一步进入地形中更加弯曲的部分时变得不适合,会导致上坡运动。
狼啸风云
2020/01/13
2.1K0
截断梯度
截断数组
数据范围 前六个测试点满足 1≤n≤10 。 所有测试点满足 1≤n≤105 ,−10000≤ai≤10000 。
凡尘扰凡心
2023/02/13
7230
每三年一次的Turbo代码和相关主题国际研讨会学习
提出了一种新的turbo码交织器设计准则,旨在降低分量解码器之间的相关性。为了超越已知的相关周长最大化,我们提出了几个额外的标准来限制短相关周期的影响并增加代码多样性,
全栈程序员站长
2021/04/07
5540
Matlab实现数据导出
MATLAB 允许你使用数据在另一个应用程序读取 ASCII 文件,MATLAB提供了多种数据输出选项。
用户9925864
2022/07/27
9220
Matlab实现数据导出
MATLAB-字符串
你可以使用数字转换函数,如 uint8 或 uint16 字符串中的字符转换成数字代码。
用户9925864
2022/07/27
1.8K0
mysql磁盘阵列部署_部署磁盘阵列
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
全栈程序员站长
2022/07/01
2K0
mysql磁盘阵列部署_部署磁盘阵列
文本溢出截断省略
文本溢出截断省略是比较常见的业务场景,主要分为单行文本溢出截断省略与多行文本溢出截断省略,单行的截断方案比较简单,多行截断相对比较复杂。
WindRunnerMax
2020/08/27
1.7K0
光学相控阵列
上周笔记介绍了基于硅光芯片的室内无线通信进展,其核心器件是硅基的光相控阵列。这一篇笔记主要介绍光学相控阵列。
光学小豆芽
2020/08/14
4.6K0
MATLAB-常见命令使用
使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。
用户9925864
2022/07/27
1.5K0
freemarker该阵列
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117468.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
6100
截断阈值化处理
算法:截断阈值化处理是将灰度值大于阈值的像素值设定为阈值,小于或等于阈值的像素值保持不变;或将大于阈值的像素值保持不变,小于或等于阈值的像素值设定为阈值,二者只是显示形式不同。截断阈值化处理应用在边缘提取、图像分割、目标识别等领域。
裴来凡
2022/05/28
1.1K0
截断阈值化处理
差异与阵列和阵列结构和链表的区别
1,阵列和一个链表之间的差? 通话清单和数组可以称得上是线性形式。 所谓阵列 做订单,的主要区别在于,订单表是一个连续的开放空间来存储在内存中的数据,是同样类型的数据。
全栈程序员站长
2022/07/06
6000
点击加载更多

相似问题

MATLAB中的级联单元阵列

110

Matlab中的级联单元阵列和矩阵

10

Matlab -级联炭阵列

11

Matlab单元阵列

47

单元阵列MATLAB

112
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文