-2

RadUpload コントロールを使用して画像をアップロードし、JCrop 用に表示します。これらは単なる一時ファイルのアップロードであるため、一時フォルダーに配置します。ユーザーが同じ名前の画像をアップロードする可能性を防ぐために、保存するときに名前を変更します。

私の部分的な見解:

@(Html.Telerik().Upload()
        .Name("attachments")
        .Multiple((bool) false)
        .ClientEvents(events => events
        .OnSuccess(
                @<text>
            function(e) {
                displayTempUpload(e);
            }
        </text>)
        )
        .Async(async => async
                .Save("Add", "Image")
                .AutoUpload((bool)true)
        )
    )

私のコントローラー:

public ActionResult Add(IEnumerable<HttpPostedFileBase> attachments)
        {
            var fileName = "";
            foreach (var file in attachments)
            {
                fileName = Guid.NewGuid().ToString() + path.GetExtension(file.FileName);
                var physicalPath = Path.Combine(Server.MapPath("~/temp"), fileName);

                file.SaveAs(physicalPath);
            }
            return Content("");
        }

ファイル名を変更しない場合、JQuery を使用してアップロードされた画像を表示できます。

function displayTempUpload(e) {
    var info = getFileInfo(e);
    var path = "/temp/" + info;

    $("#img").attr("src", path);
}

function getFileInfo(e) {

    return $.map(e.files, function (file) {
        var info = file.name;
        return info;
    }).join(", ");
}

ただし、 onSuccess 関数に渡されるファイル オブジェクトは元のファイル名を保持します。ファイル名を変更したので、新しい値を何らかの方法で onSuccess 関数に渡すことはできますか?

コントローラ アクションの戻り値を変更してみAdd()ましたが、保存処理でエラーが発生したと RadUpload コントロールが判断する結果になりました。onSuccess 関数の他のプロパティも調べましたeが、何も役に立たないようです。

4

1 に答える 1

1

おい、

Content メソッドで文字列として返そうとすると、おそらく応答はエラーとして扱われます。ただし、JSON を返す場合は正常に動作するはずです。試してみる。

于 2012-07-03T19:54:00.350 に答える