Fileupload не работает после загрузки файла

веб-приложение, c # .NET. У меня есть мультивью в Updatepanel и три вида. В третьем представлении я загружаю файл и его работа. Затем при первом просмотре мне нужно загрузить файл. Я добился этого. Я хочу добавить еще один элемент управления AsyncFileUpload после функции загрузки. Проблема в том, что загрузка работает, но если я сначала загружаю файл, а затем пытаюсь загрузить файл, он не работает (в том же представлении). Он работает, если я не загружаю файл и не загружаю, но не работает, если я загружаю, а затем загружаю файл. Код для загрузки файла следующий.

string filename = Path.GetFileName(AsyncFileUpload1.FileName);
                string ext = Path.GetExtension(filename);
                if (ext == ".exe" || ext == ".EXE" || ext == ".dll" || ext == ".DLL" || ext == ".config" || ext == ".CONFIG" || ext == ".com" || ext == ".COM")
                {
                    fName = null;
                    lblStatus.Text = "You cant upload " + ext.ToString() + " Files";
                }
                else
                {
                    string newfilename =  e.filename;
                    string strPath = MapPath("../MsgAttach/") + Path.GetFileName(newfilename);
                    AsyncFileUpload1.SaveAs(strPath);
                }

Вот код для загрузки файла.

string filename = hd_file.Value.ToString();
        string filepath = MapPath("../MsgAttach/" + filename);
        if (File.Exists(filepath))
        {
            byte[] buffer;
            using (FileStream fileStream = new FileStream(filepath, FileMode.Open))
            {
                int fileSize = (int)fileStream.Length;
                buffer = new byte[fileSize];
                // Read file into buffer
                fileStream.Read(buffer, 0, (int)fileSize);
            }
            Response.Clear();
            Response.Buffer = true;
            Response.BufferOutput = true;
            Response.ContentType = "application/x-download";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
            Response.CacheControl = "public";
            // writes buffer to OutputStream
            Response.OutputStream.Write(buffer, 0, buffer.Length);
            Response.End();
        }

В чем может быть проблема?


person LeO    schedule 17.08.2011    source источник
comment
Не могли бы вы уточнить, чем не работать?   -  person Jon Skeet    schedule 17.08.2011
comment
когда я сначала загружаю файл, а затем пытаюсь загрузить файл, загруженный файл будет загружен снова ...   -  person LeO    schedule 17.08.2011
comment
Помимо всего прочего, вы игнорируете результат вызова FileStream.Read. Вы никогда не должны предполагать, что вызов Stream.Read прочитает все нужные вам данные за один вызов.   -  person Jon Skeet    schedule 17.08.2011
comment
Что ты конкретно имеешь ввиду? Вы показали только часть пути кода загрузки файла - что происходит после этого? Какой ответ?   -  person Jon Skeet    schedule 17.08.2011
comment
Это похоже на электронную почту, когда вы получаете почту, сначала вы проверяете вложение, скачивая, а затем, когда вы хотите ответить, прикрепив свой файл. Здесь проблема в том, что загрузка работает, загрузка работает, но после загрузки вложения загрузка в ответ не работает.   -  person LeO    schedule 17.08.2011
comment
это не запускающее событие загрузки файла   -  person LeO    schedule 17.08.2011
comment
да, я знаю о stream.read, но не знаю, создает ли это какие-либо проблемы.   -  person LeO    schedule 17.08.2011
comment
Вы до сих пор не показали, какой код появляется после загрузки файла - например, он просто попадает в код, выполняющий загрузку? Краткий, но полный пример этого был бы действительно полезен. Кроме того, что произойдет, если вы попытаетесь загрузить без загрузки сначала?   -  person Jon Skeet    schedule 17.08.2011
comment
вы можете рассматривать это как функцию рассылки. загрузка и выгрузка - это разные вещи здесь (прикрепленный файл не является обязательным), так как в электронном письме мы загружаем вложение, и если мы хотим ответить, мы можем прикрепить файл. Здесь, если я загружаю файл без проверки вложения, он работает. Но если я проверяю (загружаю) attachemnt, а затем в разделе ответов я пытаюсь загрузить файл, и событие file_upload не запускается. Думаю, теперь мне все ясно .. спасибо   -  person LeO    schedule 17.08.2011


Ответы (1)


У меня была такая же проблема, и я ищу его в последнее время, у меня были некоторые проблемы, но я надеюсь, что кому-то, кто испытывает такие же неудобства, этот совет вы можете помочь:

linkMass string = <your new page aspx>;
             ScriptManager.RegisterStartupScript (this.Page, this.GetType (), "script1", "window.open ('" + linkMass +' ',' _self '' directories = no, toolbar = no, scrollbars = no, resizable = no, top = 10, left = 10, width = 200, height = 100 '); ", true);

Рассмотрим значение «_self» для запуска на той же странице загрузки и загрузки нового aspx-кода.

Response.Clear();
            Response.Buffer = true;
            Response.BufferOutput = true;
            Response.ContentType = "application/x-download";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
            Response.CacheControl = "public";
            // writes buffer to OutputStream
            Response.OutputStream.Write(buffer, 0, buffer.Length);
            Response.End();
person Dario    schedule 08.07.2016