Как загрузить контент в коллекцию Request.Files для последующего поиска на стороне сервера? - PullRequest
0 голосов
/ 14 ноября 2011

Я использую мультизагрузочный элемент управления вводом, и он не на стороне сервера, т.е. чистый HTML, а не asp: tagged.

Теперь проблема на стороне сервера. Я пытаюсь получить доступ к коллекции Files объекта Request, надеясь, что после загрузки элемент управления вводом поместит файлы в эту коллекцию.

Я даже импортировал некоторые сценарии в javascript, чтобы он работал, но всякий раз, когда я перебираю код, свойство Request.Files, которое должно содержать просмотренные и выбранные файлы, всегда пусто. Что я должен делать? Ooooops! извините, я не показал код:

var x = this.Page.FindControl("FileUpload1");

            lbuploadmessage.Text = x.GetType().ToString();

          HttpFileCollection hfc = Request.Files; 
            List<L2SQLData.PatientFile> list = new List<L2SQLData.PatientFile>();
            for (int i = 0; i < hfc.Count; i++)
            {
                HttpPostedFile hpf = hfc[i];
                if (hpf.ContentLength > 0 && hpf.ContentLength < 1024000)
                {
                    string filename = Path.GetFileName(hpf.FileName);
                    string ext = Path.GetExtension(hpf.FileName);
                    var guidname = Guid.NewGuid().ToString();
                    //FileUpload1.SaveAs(Server.MapPath("~/Uploads/DocClerkings/") + guidname + ext);

                    hpf.SaveAs(Server.MapPath("~/Uploads/DocClerkings/") + guidname + ext );
                    lbuploadmessage.Text = "Upload status:" + hpf.FileName + " successfully uploaded!";

Как вы можете видеть, я назвал control- "FileUpload1", но во время выполнения (Debug) объект x имеет значение null, а коллекция Request.Files, которая должна содержать просматриваемые файлы, также пуста. Элемент мультизагрузки выглядит следующим образом:

<input id = "FileUpload1" type="file" class="multi"/>

с двумя сценариями, которые я добавил следующим образом:

<script src="jquery-latest.js" type="text/javascript" language="javascript"></script>
<script src="jquery.MultiFile.js" type="text/javascript" language="javascript"></script>

Так что я пропустил?

Приветствия

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

Чтобы заставить его работать, вам нужно изменить его

<asp:FileUpload ID="FileUpload1" runat="server" class="multi" />

Этот плагин ненавязчив и знает от class="multi", что вы хотите, чтобы он что-то сделал ...

Для полнойпошаговое руководство о том, как заставить его работать, см. http://www.dotnetcurry.com/ShowArticle.aspx?ID=317 и http://www.codeproject.com/KB/aspnet/multiple_file_upload.aspx

Примечание: ваше использование не работает, потому что этот плагин НЕ загружает ничего, он «только» для обеспечения некоторых приятных дополненийна стороне клиента - от http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Uploading

Может ли этот плагин загружать файлы?

Нет, этот плагин jQuery не загружает файлы

0 голосов
/ 14 ноября 2011

Я наконец нашел недостающую ссылку в http://docs.jquery.com/Tutorials:Multiple_File_Upload_Magic

var fileMax = 3;

$("input[@type=file]").change(function(){
   doIt(this, fileMax);
 });

Все эти строки в разметке дизайнера.Конечно, код сервера по-прежнему остается таким же, как подробно описано в приведенном выше решении Yahia. Причина, по которой я его принял: D.Вот это - в кнопке загрузки разместите это:

HttpFileCollection hfc = Request.Files; 
        List<L2SQLData.PatientFile> list = new List<L2SQLData.PatientFile>();
        for (int i = 0; i < hfc.Count; i++)
        {
            HttpPostedFile hpf = hfc[i];
            if (hpf.ContentLength > 0 && hpf.ContentLength < 1024000)
            {
                string filename = Path.GetFileName(hpf.FileName);
                string ext = Path.GetExtension(hpf.FileName);
                var guidname = Guid.NewGuid().ToString();


     hpf.SaveAs(Server.MapPath("~/Uploads/DocClerkings/") + guidname + ext );
     lbuploadmessage.Text = "Upload status:" + hpf.FileName + " successfully uploaded!";

Спасибо за помощь Яхье и всем.Вы, ребята на Stack Overfolow, лучшие!

...