Vivek.anand34 Ответов: 1

Как загрузить несколько файлов в папку с помощью vb. asp


уважаемый друг,

Мне нужно загрузить файлы из html-таблицы: у меня есть загрузка файлов в строки html-таблицы, а затем нажмите кнопку СОХРАНИТЬ, чтобы все файлы были загружены в папку.

Моя проблема в том,что только одна строка файла загружается. Я добавляю еще одну строку, которая не была выполнена.

Что я уже пробовал:

  var length = $("#tblInvoices2").children().length;
       
 
                var test = new FormData();
                   var fileUpload;
                   var files;
                for (var i = 0; i < length; i++) {     
                    fileUpload= $("#tblInvoices2").find(".files").get(i);                
                    files= fileUpload.files;          
                    test.append(files[i].name, files[i]);
                    }
$.ajax({
                    url: "FileUploadHandler.ashx",
                    type: "POST",
                    contentType: false,
                    processData: false,
                    data: test,
                    // dataType: "json",
                    success: function (result) {
                        alert(result);
                    },
                    error: function(xhr,err){
    alert("Error");
}
                });

обработчик:
If context.Request.Files IsNot Nothing Then
           For Each file As String In context.Request.Files
               Dim uploadedFile = context.Request.Files(file)
               If uploadedFile.ContentLength > 0 Then
                   Dim appData = context.Server.MapPath("~/AIOCD0373/")
                   Dim fileName = System.IO.Path.GetFileName(uploadedFile.FileName)
                   uploadedFile.SaveAs(System.IO.Path.Combine(appData, fileName))
               End If
           Next
       End If

1 Ответов

Рейтинг:
8

Richard Deeming

Ваш код для построения FormData выглядит неправильно.

Ты сидишь length к числу дочерних элементов #tblInvoices, который будет работать только в том случае, если ваш .files входные данные являются прямыми дочерними элементами этого элемента.

Затем вы пытаетесь прочитать N-й выбранный файл из каждого входного файла - первый файл, выбранный на первом входе,второй файл, выбранный на втором входе, и т. д.

Если каждый вход позволяет выбрать несколько файлов, то вы будете пропускать большинство из них. И если они позволяют выбрать только один файл, то у них будет только один файл, поэтому будет прочитан только первый.

Попробуйте вместо этого:

var test = new FormData();
$("#tblInvoices2 .files").each(function(){
    var files = this.files;
	var fileCount = files.length;
    for (var i = 0; i < fileCount; i++) {
	    var file = files[i];
	    test.append("file", file, file.name);
	}
});


Vivek.anand34

Да спасибо... я решил выданный:

var test = new FormData();
ВАР length1 = $("#tblInvoices2").детей().длина;
ВАР fileupload с;
var-файл;

for (var i = 0; i < length1; i++) {
fileupload с= $("#tblInvoices2").найти(".файлы").вам(я);
файлы= fileUpload.файлы;
для (var j = 0; j < файлов.длина;j++) {
тест.добавить(файлы[Дж].имя файлов[Дж]);
}
}