Несколько файловых входов - PullRequest
0 голосов
/ 05 января 2011

Я использую Asp.net, и требование указывает, что я использую ввод html для отправки файлов на сервер, а не asp: fileupload. [Причина: Добавить дополнительные элементы управления вводом html, аналогично файловому менеджеру CPanel.Ввод файла, из которого пользователь может выбрать другой файл *. Но когда я отправляю сообщение, коллекция файлов запросов всегда пуста. * ФОРМА HTML:

<form method="post" enctype="multipart/form-data" action="documents.aspx">
<div>
    <input type="file" name="attachment" id="attachment" onchange="validate(this)" />
    <span class="none">Filename should be within (1-25) letters long. Can Contain only letters
        & numbers</span>
    <div id="moreUploads">
    </div>
    <div id="moreUploadsLink" style="display: none;">
        <a href="javascript:addFileInput();">Attach another File</a></div>
        <input type="submit" id="btnSubmit" />
</div>
</form>

Javascript:

var upload_number = 2;function addFileInput() {
try {
    var fileUpload = document.getElementById("attachment");
    var elemSpan = nextElement(fileUpload).cloneNode(true);
    var elemDiv = document.getElementById("moreUploads");
    var d = document.createElement("div");
    var file = document.createElement("input");
    file.setAttribute("type", "file");
    file.setAttribute("id", "attachment" + upload_number);
    file.setAttribute("onchange", "validate(this)");
    d.appendChild(file);
    d.appendChild(elemSpan);
    elemDiv.appendChild(d);
    upload_number++;
} catch (err) {    alert(err);}}

validate (this) - это функция, которая проверяет типы файлов на клиенте. Когда проверка завершается успешно, активируется ссылка на добавление дополнительных входных файлов.Может ли кто-нибудь пролить свет на это.

1 Ответ

1 голос
/ 05 января 2011

Я думаю, вам нужно установить атрибут name для входов.Добавьте это:

file.setAttribute("name", "attachment" + upload_number);

Обновление

Другая проблема, с которой вы столкнулись, заключается в том, что вы пытаетесь вложить тег формы внутрь другого (поскольку ваша мастер-страница обычноуже есть <form runat="server">).Ваши загрузки не будут работать в этой ситуации, потому что основная форма не имеет правильного значения enctype.Обычно, если вы используете элемент управления asp.net FileUpload, он автоматически установит для правильного enctype multipart / form-data в главном теге формы.Тем не менее, поскольку вы используете просто ввод html, asp.net не знает, что вы пытаетесь загрузить файлы, и поэтому не устанавливает для вас enctype.

Итак, вам нужно сделать следующее:

a) избавиться от тега формы, который у вас есть выше (не нужен)

b) в вашем коде для этой страницы, поместите следующую строку в обработчик для события page_init:

this.Form.Enctype = "multipart/form-data";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...