Одна из возможностей - заставить ваше действие загрузки на стороне сервера вернуть уникальный идентификатор после завершения загрузки, что позволит вам позже идентифицировать файл на сервере:
[HttpPost]
public ActionResult Upload()
{
var fileId = Guid.NewGuid().ToString();
// TODO: do the uploading ...
return Json(new { id = fileId });
}
и на клиенте храните карту между уникальным идентификатором файла, возвращаемым сервером, и идентификатором на клиенте. Тогда вы можете подписаться на события onComplete и onCancel :
$(function () {
var map = {};
$('#file_upload').uploadify({
'uploader': '@Url.Content("~/scripts/uploadify/uploadify.swf")',
'script': '@Url.Action("upload")',
'cancelImg': '@Url.Content("~/scripts/uploadify/cancel.png")',
'auto': true,
'removeCompleted': false,
'multi': true,
'onComplete': function (event, ID, fileObj, response, data) {
// once the upload succeeds we retrieve the id returned
// by the server and we put it in the map
map[ID] = $.parseJSON(response).id;
},
'onCancel': function (event, ID, fileObj, data) {
var fileId = map[ID];
if (fileId) {
// TODO: here you could send a request to the server to
// inform him that the user wants to delete the file with
// the given unique id
}
}
});
});