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

时间:2015-06-12 07:42:18

标签: javascript php forms joomla3.0

在下面的用例中我试图完成只有步骤3到目前为止还没有工作,我正在Joomla 3.4环境中工作,因为我在这里处理模块。

  1. 我有一个html表单,要求输入一些文件和上传文件。
  2. 我使用JavaScript处理此文件到pgp进行加密(使用:https://keybase.io/kbpgp
  3. 现在我想用表格替换表格中的原始文件 加密的,或至少将加密的一个添加到表单数据。 到目前为止,这不起作用,我该如何实现?
  4. 当所有内容都在JavaScript部分form.submit();中完成时称为
  5. 发送加密为正文的表格纯文本的电子邮件,该文件应作为加密附件添加。
  6. 一些细节:

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

    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 repo在这里:https://github.com/JamborJan/joomlaencryptedcontact

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

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

1 个答案:

答案 0 :(得分:1)

也许你可以尝试,一旦文件被pgp加密,在base64中编码数据,然后通过JavaScript编辑DOM,将结果字符串放入输入类型=隐藏。

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

如果你想要一些示例Javascript代码,请告诉我,我有一些代码片段处理这个。

- >我想知道和Mave一样的东西,但我想如果你想要这样的话有一些原因吗?一种解决方法可能是在表单与表单之间创建一个新页面,并告诉您邮件已被发送(您可以使用该文件执行所需操作,一个服务器端,并显示它可供下载到只是未加密上传的用户。)

另一件事,要在JavaScript中处理base64编码数据,您可以使用: - btoa()方法编码为base64, - atob()方法来反转它。