Изменить каталог в плагине swfupload jQuery? - PullRequest
0 голосов
/ 04 сентября 2010

Я пытаюсь использовать плагин swfupload для загрузки файлов. Дело в том, что я хочу, чтобы пользователь мог переключать каталог для загрузки в.

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

т.е. если я открою страницу и нажму на ссылку для загрузки, появится div с именем uploadPanel, который загружает swfupload. Я могу сделать первую загрузку нормально. Но если я выберу другой каталог, он не будет работать. Я поставил предупреждение для проверки правильности переменной текущего каталога. Это предупреждение всегда правильно отображает текущий каталог. Но, тем не менее, когда вызывается метод действия в коде сервера, каталог всегда соответствует первому выбранному каталогу, который у меня был при первой загрузке.

Вот код jQuery:

<script type="text/javascript">
    var uploadDir;
    $(function () {
        $("#uploadPanel").hide();
        var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>";
        loadFileManager(); 

        $("#uploadLink").click(function (event) {
            $('#uploadPanel').show();


            alert("uploadDir: " + uploadDir); //NOTE!!!: This shows the correct current directory, and yet, in post_params below, a previous directory is still sent to the action method in the Controller. How is this possible when the alert shows the correct directory?
            $("#inputFile").makeAsyncUploader({
                upload_url: "/Upload/AsyncUpload/",
                flash_url: '/Scripts/swfupload.swf',
                button_image_url: '/Scripts/blankButton.png',
                post_params: { token: auth, currentDirectory: uploadDir },
                use_query_string: true,
                disableDuringUpload: 'INPUT[type="submit"]'
            });

            $("#closeButton").click(function () {
                $("#uploadPanel").hide();
                $("#inputFile_completedMessage").hide();
            });
        });
    });        

</script>

Примечание: uploadDir установлен в другом месте, в отдельном js-файле. Но дело в том, что его значение всегда правильно в предупреждении, так почему бы не вызвать метод действия?

1 Ответ

0 голосов
/ 11 сентября 2010

Вы можете изменить значение параметров POST по своему желанию, вызвав метод: setPostParams () для экземпляра SWFUloader, чтобы вам не приходилось каждый раз заново создавать экземпляр.

ТАКЖЕ, переменные POST - это просто произвольные пары ключ / значение. Чтобы они что-то значили - в данном случае, чтобы изменить каталог загрузки - вам придется обрабатывать их в коде на стороне сервера, который, как я предполагаю, находится здесь: / Upload / AsyncUpload (хотя у меня есть сомнения, поскольку я ожидается, что в этом случае это будет что-то вроде /Upload/AsyncUpload.asp).

Кроме того, поскольку вы все равно используете jQuery, вам следует рассмотреть возможность использования очень удобного плагина jQuery.swfupload. Упрощает загрузку при работе с SWFUploader.

http://github.com/ifunk/swfupload-jquery-plugin

...