-2

我使用 RadUpload 控件上传图像,然后显示它们以用于 JCrop-ing 目的。由于这些只是临时文件上传,我将它们放在一个临时文件夹中。为了防止用户上传同名图片的可能性,我在保存时重命名了它们。

我的部分观点:

@(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 控件认为在保存过程中发生了错误。我还查看e了 onSuccess 函数中的其他属性,但似乎没有任何帮助。

4

1 回答 1

1

哟,伙计,

如果您尝试使用 Content 方法将其作为字符串返回,则响应很可能会被视为错误。但是,如果您返回 JSON,它应该可以正常工作。试试看。

于 2012-07-03T19:54:00.350 回答