AngularJS 如何发送多部分/混合

2024-04-07

我正在开发一个项目,我必须在 AngularJS 中上传少量 JSON 和文件。

我已经使用 Danial Farid 的 Angular-file-upload 编写了代码,并且它正在工作,除了它总是发送“multipart/form-data,boundary=

但是,我MUST使用多部分/混合。

这是我的电话:

$scope.upload = $upload.upload({
  url: <my url>,
  method: 'POST',
  data: $scope.data,
        file: file,
}).progress(function(evt) {
  console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total));
}).success(function(data, status, headers, config) {
  // file is uploaded successfully
  console.log(data);
});

有没有办法在发送之前修改标头?

如果不使用他的角度文件上传,那么通过另一种方法,希望不必“滚动我自己的”功能?

Edit 1:

我只是无法理解为什么做出这样的改变会如此困难。当然你可以添加

headers: {'Content-Type': 'multipart/mixed'}

但这绝对没有任何作用,因为没有边界。为什么就没有办法拉出界限呢?就像是

headers: {'Content-Type': 'multipart/mixed, boundary=%b'}

我需要尽快让这个工作。


我不能再等了。我最终自己推出了它,它确实有效。这是代码...希望其他人能够受益。

file_contents 是 reader.readAsArrayBuffer($scope.files[0]); 的输出。

您需要从前导码文本、文件数据和页脚构建一个 blob,因为否则将二进制数据附加到字符串将对二进制文件数据进行转换,并且它将无法正常工作。

var epochTicks = 621355968000000000;
var ticksPerMillisecond = 10000;
var yourTicks = epochTicks + ((new Date).getTime() * ticksPerMillisecond);

var boundary='---------------------------'+yourTicks;

var header="--"+boundary+"\r\n";

var footer="\r\n--"+boundary+"--\r\n";

var contenttype="multipart/mixed; boundary="+boundary;

var contents=header+"Content-Disposition: form-data; name=\"json\"\r\n";
contents+="Content-Type: application/json\r\n";
contents+="Content-Length: "+JSON.stringify(data).length+"\r\n\r\n";
contents+=JSON.stringify(data)+"\r\n";

contents+=header+"Content-Disposition: form-data; name=\"image\"; filename=\""+$scope.files[0].name+"\"\r\n";
contents+="Content-Transfer-Encoding: binary\r\n";
contents+="Content-Type: "+$scope.files[0].type+"\r\n";
contents+="Content-Length: "+$scope.files[0].size+"\r\n\r\n";

blob=new Blob([contents,file_contents,footer]);

$http.post(restUrl+"user/avatar/uploadAvatar",blob,{'headers':{'Content-Type':contenttype}}).
success(function (data, status, headers, config) {
  alert("success!");
}).
error(function (data, status, headers, config) {
  alert("failed!");
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 如何发送多部分/混合 的相关文章

随机推荐

  • 在 irb 中导航命令行的键盘快捷键

    我看过用户运行 irb 的截屏视频 当他们编写文本时 他们会跳转到行的开头 结尾以及单词的开头 结尾 用于执行此操作的击键是什么 这取决于所使用的外壳吗 Ctrl A gt Move to beginning of line Ctrl E
  • 同一解决方案中的 NuGet 引用

    以前可能已经问过这个问题 如果是 请提供链接 我正在为我的公司开发一套 核心 解决方案 我们在此解决方案集中有几个不同的项目 每个项目在构建时都会变成一个 NuGet 包 以便在我们的其他解决方案项目中使用 我发现我想通过 NuGet 引用
  • Swift Firebase Storage 如何检索名称未知(NSUUID)的图像

    我正在制作一个函数来检索 url 作为用户图像 然而 我的上传图像名称功能是由NSUUID创建的 因此 我不知道每个用户个人资料图片的名称是什么 如何改进我的代码以获得每个用户的用户 imgae 而不是硬编码 img 名称 func get
  • RStudio 通常在空白屏幕中启动;需要 sudo 才能工作

    在新安装的 x64 Ubuntu GNOME 16 04 和 R v3 3 2 上运行的 RStudio v1 0 136 在空白屏幕中启动 终端输出如下 参见屏幕截图 TypeError undefined is not an objec
  • Pydoc 没有看到文档字符串?

    显然我在这里错过了一些严重的事情 这是我的测试程序 Doc and nothing but doc class TestMe object class documentation goes here def testFunc self Fu
  • 应忽略听到“元素‘行为’具有无效子元素”,但因此阻止更新服务引用[重复]

    这个问题在这里已经有答案了 可能的重复 元素 behavior 在 wcf app config 中具有无效的子元素 myFaultExtension https stackoverflow com questions 4677377 th
  • 如何为 Material UI React 添加 RTL 支持

    我正在构建一个 LTR 应用程序 并且想添加 RTL 支持 该应用程序基于 Material UI React 之上 由于我使用的是 CSS Flex Box 因此我能够将应用程序旋转到 RTL 只需将 dir rtl 添加到主体即可 我还
  • 如何从这个字符串中解析出时间戳?

    我有这个示例字符串 Sample string 1 A 1 1 B 1 I 2 f 0 p 1 d 2010 07 21T08 52 05 222ZKHBDGSLKHFBDSLKFGNIF XLGCREWIGMEWCERG Sample s
  • 苹果推送通知服务统计(apns)

    是否可以找到相关信息Apple Push Notification服务使用情况 有多少人正在使用它们 有多少人正在拒绝它们 或者也许 有人已经掌握了此类信息 苹果没有提供大量关于有多少用户实际接受 拒绝推送通知的信息 但您可以通过比较总安装
  • Twitter Bootstrap 单选框/复选框 - 如何放置字形图标

    使用 TB 是否可以设置单选按钮或复选框的样式 使其显示字形而不是单选按钮或复选框的默认样式 我想用一个glyphicon glyphicon star表示未选中 然后glyphicon glyphicon star empty来表示已检查
  • 这是seaborn.lineplot 色调参数中的错误吗?

    通过此代码片段 我期望得到一个每种色调一条线的线图 它具有以下不同的值 1 5 10 20 40 import math import pandas as pd import seaborn as sns sns set style whi
  • Javascript 闭包解释 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 问题 闭包似乎有很多好处 但有哪些缺
  • 如何删除动态数组?

    我在这个问题的帮助下构建了一个数组 如何在 C 中使用 new 声明二维数组 https stackoverflow com questions 936687 how do i declare a 2d array in c using n
  • “tuple”对象不支持项目分配

    我正在使用 PIL 库 我正在尝试使图像看起来更红 这就是我所拥有的 from PIL import Image image Image open balloon jpg pixels list image getdata for pixe
  • 将字节数组转换为 CGImage

    我在无符号字符数组中有图像的灰度值 我想将其转换为CGImage这样我就可以使用它在 iOS 中显示它UIImage unsigned char 数组的每个值都是灰度图像的像素值 我正在使用以下代码 但图像未显示 void viewDidL
  • 与不使用 if 的测试相比,if 语句的效率如何? (C++)

    我需要一个程序来获取两个数字中较小的一个 我想知道是否使用标准 如果 x 小于 y int a b low if a lt b low a else low b 比这个更有效率或更低 int a b low low b a b a b gt
  • Excel:找出单元格是否包含/包含一系列单元格中的值

    我有一个职位列表 A 和短语列表 B 对于 A 中的每个标题 我想检查它是否包含 B 中的短语 任何短语 我不在乎是哪个 1 Example Column A Example Column B 2 Head of Marketing Sen
  • Kafka 无法在 Azure Web 应用服务上运行

    我们正在尝试在 Azure Web 应用服务上部署 Kafka 我们不断收到以下错误 容器 NN 未响应端口 2181 上的 HTTP ping 站点启动失败 请参阅容器日志进行调试 WEBSITES PORT 设置为 2181 并且在 D
  • 密码自加密可行吗?

    我一直在阅读有关密码存储的内容 基本上发现了两种常用的技术 使用单个密钥对存储的所有密码进行加密 Using hashes 使用带盐的哈希值 存储 自行加密 的密码是否存在缺陷 即加密一个txt 其中写着password1用密码passwo
  • AngularJS 如何发送多部分/混合

    我正在开发一个项目 我必须在 AngularJS 中上传少量 JSON 和文件 我已经使用 Danial Farid 的 Angular file upload 编写了代码 并且它正在工作 除了它总是发送 multipart form da