2

我正在使用 SWFUpload 在 ASP.NET MVC 1.0 网站中进行文件上传。它工作正常,但我无法验证上传方法。HttpContext.User.Identity.Name 返回一个空字符串。我假设这是因为 Flash 电影正在发帖。我也在使用这里提供的包装器:http: //blog.codeville.net/2008/11/24/jquery-ajax-uploader-plugin-with-progress-bar/

下面的控制器动作被触发,但正如上面提到的,用户对象没有被传递。

任何帮助表示赞赏!

看法

HTML

            <form enctype="multipart/form-data" method="post" action="/Media/Upload/Photo">
                <input type="file" id="userPhoto_Photo" name="userPhoto_Photo" />
            </form>

Javascript

    $(function() {
        $("#userPhoto").makeAsyncUploader({
            upload_url: '/Media/Upload',
            flash_url: '<%= Url.Content("~/Content/Flash/swfUpload-2.2.0.1.swf") %>',
            file_size_limit: '1 MB',
            file_types: '*.jpg; *.png; *.gif',

            button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE, 
            button_width: 210,
            button_height: 35, 
            button_image_url: '<%= Url.Content("~/Content/Images/UploadPhoto.png") %>',
            button_text: '',
button_cursor: SWFUpload.CURSOR.HAND,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT

        });
    });   

控制器动作

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Upload()
    {
        if (Request.Files.Count == 1)
        {
            //Upload work
        }
        return RedirectToAction("Index", "Profile");
    }
4

3 回答 3

2

这很容易通过传递一个 post 参数来解决,该参数是 swfUpload API 的一部分。然后,使用表单身份验证手动对传递的用户名或用户 ID 进行身份验证。

于 2010-02-13T06:16:03.913 回答
2

您还应该查看这篇文章: http
://trycatchfail.com/blog/post/2009/05/13/Using-Flash-with-ASPNET-MVC-and-Authentication.aspx 它完美地解释了您需要做什么确保您的应用程序安全,并且仍然使用像 Uploadify 或 swfupload 这样的 Flash 上传插件。

于 2010-04-09T18:00:37.813 回答
0

我相信这是因为 flash 在发出请求时不会保留浏览器会话。您必须以某种方式明确地让 flash 传递有关用户会话的一些信息。

你可以做到这一点的一种方法是设置一个cookie。让 JavaScript 读取 cookie 并将其传递给 flash。然后在上传时让 flash 一起发送。这样,您就不会使用 flash vars 传递 cookie 值。

您是否使用 Windows 集成身份验证?

于 2010-01-16T16:59:56.267 回答