首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript添加文件以通过$_POST生成数据

JavaScript添加文件以通过$_POST生成数据
EN

Stack Overflow用户
提问于 2015-06-12 07:42:17
回答 1查看 481关注 0票数 4

在下面的用例中,我只想完成步骤3到目前为止还不能工作,而且我在Joomla3.4环境中工作,因为我在这里处理一个模块。

  1. 我有一个html表单,要求一些输入和文件上传。
  2. 我用JavaScript处理这个文件到pgp来加密它(用这个:https://keybase.io/kbpgp)
  3. 现在,我希望用加密的文件替换表单中的原始文件,或者至少将加密的文件添加到表单数据中。到目前为止,这还不起作用,我如何才能做到这一点?
  4. 在JavaScript部件中完成所有操作时,调用form.submit();
  5. 发送表单纯文本为正文文本的电子邮件,该文件应以加密附件的形式添加。

一些细节:

发送未加密的文件效果很好,所以我想我可以添加加密的文件,但显然它不起作用。表单提交原始内容,而不提交添加的文件。我已经搜索了一些解决方案,这段代码片段是我研究的结果:

代码语言:javascript
复制
var data = new FormData();
data.append('upload_file' , result_buffer);
var xhr = new XMLHttpRequest();
xhr.open( 'POST', '', true );
xhr.setRequestHeader('Content-Type', 'multipart/form-data'); 
xhr.send(data);

var form = document.getElementById('formencryptmessage');
form.submit();

upload_file是原始未加密文件的表单输入;无论我做什么,$_POST请求都保留原始文件;result_buffer是一个具有文件内容的二进制缓冲区;最后,formencryptmessage是表单id和名称。

编辑

带有代码的git在这里:https://github.com/JamborJan/joomlaencryptedcontact

我们正在谈论这个:https://github.com/JamborJan/joomlaencryptedcontact/blob/master/tmpl/default.php

我的主要目的是只使用浏览器会话/ RAM /隐藏输入字段来进行文件加密和发送。到目前为止我还没有找到合适的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2015-06-12 08:03:46

也许您可以尝试,一旦文件被pgp加密,在base64中对数据进行编码,然后通过通过JavaScript编辑DOM,将结果字符串放入输入type=hidden中。

处理提交表单的脚本可以以一种简单的方式将文件附加到邮件上,因为邮件攻击是base64编码的。它只需读取隐藏输入字段的值即可。

如果您想要一些Javascript代码示例,请告诉我,我有一些处理此问题的代码片段。

->,我想知道和Mave一样的事情,但是我想如果你想要这样的话,这是有原因的?解决方法可以是在有表单的页面和发送邮件的页面之间创建一个新页面(您可以对文件做您想做的事情,服务器端的页面,并将其显示给刚刚未经加密上传的用户)。

另外,要处理base64在JavaScript中编码的数据,可以使用:- btoa()方法将其编码为base64,使用- atob()方法将其反转。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30797828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档