我使用 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 函数中的其他属性,但似乎没有任何帮助。