2

バックロード ( https://github.com/blackcity/Backload ) を使用して、現在構築中の mvc アプリケーションに画像をアップロードしようとしています。画像をデータベースに保存できるはずですが、この機能を示す例を見つけることができませんでした。

誰でもこれで運が良かったですか?

ありがとう

4

2 に答える 2

1

同様の要件があり、エンティティフレームワークを使用したくなかったため、次のように処理しました。

カスタムコントローラー:

public async Task<ActionResult> UploadImage()
    {
        FileUploadHandler handler = new FileUploadHandler(Request, this);

        handler.StoreFileRequestFinished += handler_StoreFileRequestFinished;

        ActionResult result = await handler.HandleRequestAsync();

        return result;
    }

イベント ハンドラー メソッド:

void handler_StoreFileRequestFinished(object sender, StoreFileRequestEventArgs e)
    {
        //I know I am only expecting 1 file...
        var file = e.Param.FileStatus.Single();
        //Call my service layer method to insert the image data
        //You could base64 encode the stram here and insert it straight in the db
        service.InsertProductImage(
            int.Parse(e.Param.CustomFormValues["ProductID"]), 
            file.FileName, 
            file.FileUrl, 
            Server.MapPath(new Uri(file.FileUrl).PathAndQuery), 
            int.Parse(e.Param.CustomFormValues["FileTypeID"]), 
            int.Parse(e.Param.CustomFormValues["ColourID"]), 
            Current.User().UserID
        );
    }

ビューでの Javascript アップロード

$('#Form_FocusGraphic').fileupload({
            url: "/Product/UploadImage",
            acceptFileTypes: /(jpg)|(jpeg)|(png)|(gif)$/i,
            fileInput: $('input#FocusGraphicInput'),
            maxFileSize: 5000000, //5mb
            formData: [{ name: 'ProductID', value: '@Model.ProductID' }, { name: 'FileTypeID', value: '3' }, { name: 'ColourID', value: '0' }, { name: 'uploadContext', value: "3;0" }],
            start: function (e, data) {
                $('img#FocusImage').attr('src', '/Content/img/largeSpinner.gif');
            },
            done: function (e, data) {
                var obj = jQuery.parseJSON(data.jqXHR.responseText);
                $('img#FocusGraphic').attr('src', obj.files[0].url);
            }
        });

つまり、コントローラーにリクエストを送信し(特定のカスタムパラメーターを渡します)、カスタムイベントを FileUploadHandler にアタッチして、「StoreFileRequestFinished」でカスタムハンドラーを呼び出します。実際には非常に簡単です。

于 2013-11-29T12:58:20.647 に答える
0

商用製品ではデータベース機能を使用しています。私たちは私たちのために開発されたカスタムバージョンを使用していると言わざるを得ません. 私の知る限り、データベース機能は、ソース コードとサポートと共に Enterprise エディションでのみ利用できます。安くはありませんが、それだけの価値があります。

ここを読む: https://github.com/blackcity/Backload/wiki/Configuration#database-configuration-element

于 2013-08-07T21:20:08.153 に答える