Отслеживание успешно загруженных имен файлов с помощью плагина «Uploadify» Jquery - PullRequest
0 голосов
/ 23 сентября 2011

Я использую плагин «Uploadify» в своем приложении MVC 3.0 для загрузки нескольких файлов.Работает нормально, но показывает список файлов, которые не удалось загрузить.

Как отслеживать успешно загруженные имена файлов?

Мой скрипт выглядит так:

<link href="@Href("~/Content/uploadify.css")" rel="stylesheet" />
    <script src="@Href("~/Scripts/jquery-1.4.1.js")" type="text/javascript"></script>
    <script src="@Href("~/Scripts/jquery.uploadify.js")" type="text/javascript"></script>

<script type="text/javascript">
    $(window).load(
    function () {
        $("#fileuploader").fileUpload({
            'uploader': '/Scripts/uploader.swf',
            'cancelImg': '/Images/cancel.png',
            'buttonText': 'Select Image',
            'script': 'Home/Upload',
            'folder': '/uploads',
            'fileDesc': 'Image & XML Files',
            'fileExt': '*.jpg;*.jpeg;*.gif;*.png;*.xml',
            'multi': true,
            'auto': true
        });
    }
);
    </script>

Мой HTML-код:

<div id="fileuploader"></div>
<div>Upload Status</div>
Successful Files : <div> @TempData["SuccessfulFileList"]</div>
Failed Files :<div> @TempData["FailedFileList"]</div>

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

        private static List<string> _successfulFileList = new List<string>();
        private static List<string> _failedFileList = new List<string>();

        public string Upload(HttpPostedFileBase fileData)
        {
            try
            {
                var fileName = this.Server.MapPath("~/uploads/" + System.IO.Path.GetFileName(fileData.FileName));
                fileData.SaveAs(fileName);
                _successfulFileList.Add(fileName);
            }
            catch
            {
                var failedFileName = fileData.FileName;
                _failedFileList.Add(failedFileName);
            }

            TempData["SuccessfulFileList"] = _successfulFileList;
            TempData["FailedFileList"] = _failedFileList;
            return "Some Files Get uploaded";
        }

Ответы [ 2 ]

0 голосов
/ 26 сентября 2011

Я нашел довольно описательное объяснение здесь: Ссылка

Ссылка: http://blog.bobcravens.com/2010/02/upload-files-with-progress-using-uploadify/

0 голосов
/ 23 сентября 2011

Вы используете компонент Flash для загрузки файлов (Uploadify).Флэш-компоненты не отправляют куки.Сессии отслеживаются с помощью куки.TempData использует сессию.Заключение => вы не можете использовать TempData с Flash-клиентом.Есть некоторые уродливые обходные пути .

Это, как говорится, использование статического списка в вашем контроллере для хранения загруженных файлов очень опасно, потому что объект List<T> не является потокобезопасным, и если у вас есть 2пользователи, загружающие свои файлы параллельно, могут потерпеть крах в вашем приложении.

В качестве альтернативы вы можете сохранить список загруженных файлов в хранилище данных (базу данных или что-то еще) и извлечь его оттуда вместо того, чтобы полагаться на сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...