关于javascript:使用ajax发送输入文件数据

Send input files data with ajax

本问题已经有最佳答案,请猛点这里访问。

HTML标记:

1
<input id="fileSelect" type="file" id="file" name="files[]" multiple="multiple" accept="image/*" />

我正在用php上传多个文件。我想创建一个上载文件数组,并用Ajax发送到服务器。如何创建多个选定文件的数组?

JavaScript:

1
2
3
4
5
6
7
8
9
10
11
12
jQuery.ajax({
    url: 'insertfiles.php',
    type:"POST",
    data: {
      file: // array of selected files.
    },
    success: function(data){
    },
    error: function(data){
      alert( 'Sorry.' );
    }
});


使用下面的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var formData = new FormData($("#formid")[0]);
jQuery.ajax
({
        url: 'insertfiles.php',
        type:"POST",
        data:   formData;
        success: function(data)
        {
        },
        error: function(data)
        {
            alert( 'Sorry.' );
        }
cache: false,
        contentType: false,
        processData: false
});

希望这对你有帮助


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var formData = new FormData(this);
            debugger;
            $.ajax({
                url: formURL,
                type: 'POST',
                data: formData,
                mimeType:"multipart/form-data",
                contentType: false,
                cache: false,
                processData: false,
                success: function (data, textStatus, jqXHR) {
                    debugger;


                },
                error: function (jqXHR, textStatus, errorThrown) {


                }
            });

上面的代码将帮助您在一次提交调用中发布内容和文件。

post-method参数应包括HttpPostedFileBase[] file,因此文件列表将显示在此文件参数中。


支持HTML5文件的现代浏览器在元素中有一个"文件"属性。这将为您提供一个文件列表引用,它具有length属性。

因为属性已经是一个array,所以您只需要访问它或迭代它。

JS

1
2
3
4
5
6
var input = document.getElementById('id');
console.log(input.files);

for (var i = 0; i < input.files.length; i++) {
 console.log(input.files[i]);
}


这是我的多文件上传代码。请参考这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$fileCount = count($_FILES);
for($i=0; $i < $fileCount; $i++) {
$fileName = (!empty($_FILES["file-$i"]["name"])) ? $_FILES["file-$i"]["name"] : '';

$hostName ="sql111.byethost7.com";
$userName ="b7_15386696";
$passWord ="9827322563";
$dbName   ="b7_15386696_db_printer";

$query    ="INSERT INTO print_table (NAME, EMAIL, PHONE, ADDRESS, FILENAME, NUMBEROFCOPY, SREQUIREMENTS, FIELD1)
VALUES ('$name', '$emailId', '$phone', '$address', '$fileName', '$ncopy', '$requirements', CONVERT_TZ(NOW(),'+00:00','+09:30'))"
;

$connect = mysqli_connect($hostName,"$userName","$passWord","$dbName");
// Check connection
if (mysqli_connect_errno()) {
  echo"Failed to connect to MySQL:" . mysqli_connect_error();
}