Javascript 上载两个文件,处理它们并下载一个新文件,无需重定向

Javascript 上载两个文件,处理它们并下载一个新文件,无需重定向,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在努力将两个文件上传到一个php脚本,让页面下载一个新的合并文件,而不重定向到第二个页面 我不想在服务器上缓存任何文件,因为它们可能是大的(2MB)二进制文件 看看这个问题: jQuery文件上传插件似乎无法处理上传。这里有一个发布文本的示例。但是,当数据被序列化时,文件上传似乎不会通过 $(document).on("submit", "form.fileDownloadForm", function (e) { $.fileDownload($(this).prop('acti

我正在努力将两个文件上传到一个php脚本,让页面下载一个新的合并文件,而不重定向到第二个页面

我不想在服务器上缓存任何文件,因为它们可能是大的(2MB)二进制文件

看看这个问题:

jQuery文件上传插件似乎无法处理上传。这里有一个发布文本的示例。但是,当数据被序列化时,文件上传似乎不会通过

$(document).on("submit", "form.fileDownloadForm", function (e) {
    $.fileDownload($(this).prop('action'), {
        preparingMessageHtml: "We are preparing your report, please wait...",
        failMessageHtml: "There was a problem generating your report, please try again.",
        httpMethod: "POST",
        data: $(this).serialize()
    });
    e.preventDefault(); //otherwise a normal form submit would occur
});
您可以使用
FormData()
实例使用
$将文件发布到服务器。post()
位于
更改
事件的
,位于
。然后()
向用户提供合并文件的下载

var fd = new FormData();
var n = 0;
for (let file of e.target.files) {
  fd.append("files[" + n++ +"]", file);
}
$.post("/path/to/server", {files:fd})
.then(function(data) {
  // offer download of `data` here
})
您可以使用
FormData()
实例使用
$将文件发布到服务器。post()
位于
更改
事件的
,位于
。然后()
向用户提供合并文件的下载

var fd = new FormData();
var n = 0;
for (let file of e.target.files) {
  fd.append("files[" + n++ +"]", file);
}
$.post("/path/to/server", {files:fd})
.then(function(data) {
  // offer download of `data` here
})

您只需将这两个文件添加到
formData
对象中,使用ajax上传它们并返回文件即可

差不多

<form class="fileDownloadForm" method="POST"> 
    <input type="file" name="file1">
    <input type="file" name="file2"> 
    <input type="submit>
</form>
然后把它还给我

<?php    

    echo file_get_contents($_FILES['file1']) . file_get_contents($_FILES['file2']);

?>

您只需将这两个文件添加到
formData
对象中,使用ajax上传它们并返回文件即可

差不多

<form class="fileDownloadForm" method="POST"> 
    <input type="file" name="file1">
    <input type="file" name="file2"> 
    <input type="submit>
</form>
然后把它还给我

<?php    

    echo file_get_contents($_FILES['file1']) . file_get_contents($_FILES['file2']);

?>


php
部分仅适用于文本文件,是吗?嗯,不,它可能包含php中的几乎所有内容,但是返回的结果对大多数人来说都是胡言乱语吗?
会将两个
音频/*
视频/*
文件连接成一个能够以
HTMLMEDIALEMENT
播放的文件吗?这就是第一次评论的意思。OP没有解决任何关于“合并”文件的问题,因此在自己的回答中没有解决这部分问题。@guest271314-这只是一个如何使用
$\u files
和名称等访问文件的示例。我将合并文件留给OP,因为这完全取决于文件的类型。该示例适用于文本,但对于二进制文件,如果想要加入音频、视频、图像等,则可能需要一个库。
php
部分仅适用于文本文件,是吗?嗯,不,它可能包含php中的几乎所有内容,但是返回的结果对大多数人来说都是胡言乱语吗?
会将两个
音频/*
视频/*
文件连接成一个能够以
HTMLMEDIALEMENT
播放的文件吗?这就是第一次评论的意思。OP没有解决任何关于“合并”文件的问题,因此在自己的回答中没有解决这部分问题。@guest271314-这只是一个如何使用
$\u files
和名称等访问文件的示例。我将合并文件留给OP,因为这完全取决于文件的类型。该示例适用于文本,但对于二进制,如果想要加入音频、视频、,但此解决方案需要在用户单击之前上载文件并将数据存储在服务器中download@denoise否。仅包括可用于在
元素的
事件处理程序中
文件发布到服务器的代码。使用
$.ajax()
的adeeo代码可能更适合使用
processData:false
contentType:false
但此解决方案需要在用户单击之前上载文件并将数据存储在服务器中download@denoise否。仅包括可用于在
元素的
事件处理程序中
文件发布到服务器的代码。使用
$.ajax()
的adeeo代码可能更适合使用
processData:false
contentType:false