2

SWFUploadを使用して、ASP.NET MVC1.0Webサイトでファイルのアップロードを行っています。正常に動作していますが、アップロード方法を認証できません。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

これは、swfUploadAPIの一部であるpostパラメーターを渡すことで簡単に解決されました。次に、フォーム認証を使用して、ユーザー名またはユーザー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

これは、リクエストを行うときにフラッシュがブラウザセッションを保持しないためだと思います。どういうわけか、ユーザーのセッションに関するいくつかの情報をフラッシュパスで明示的に渡す必要があります。

これを行う1つの方法は、Cookieを設定することです。JavaScriptにCookieを読み取らせ、フラッシュに渡します。次に、アップロードを行うときにフラッシュで送信します。このように、フラッシュ変数を使用してCookie値を渡すことはありません。

Windows統合認証を使用していますか?

于 2010-01-16T16:59:56.267 に答える