C1Upload控件可以用于上传文件到服务器,可以一次性上传多个文件。当文件上传时,用户可以取消上传。同时,可以通过“取消全部”按钮取消所有上传动作。或者通过,“停止”按钮取消特定文件的上传。当上传动作被取消时,文件将停止上传至服务器。
但是,文件可能存在于“Temp Folder”中,占用服务器空间。本篇文字将讲述如何删除“Temp Folder”中的临时文件。
客户端“取消”和“取消全部”按钮click事件会执行Ajax异步调用。在服务器端的方法中,我们可以删除临时文件。以下代码实为前台Ajax方法:
$(document).ready(function () {
var count = -1;
$("#C1Upload1").c1upload({
//cancel buuttons are shown when progress event is raised.
progress: function (e) {
//click event of Cancel Button
$(".wijmo-wijupload-cancel").click(function () {
count++;
//condition to restrict calling server side method only once.
if (count == 0) {
DeleteTempFiles();
}
});
}
});
//click event of CancelAll button
$(".wijmo-wijupload-cancelAll").click(function () {
DeleteTempFiles();
});
});
//Function to make an ajax() call to server side method.
function DeleteTempFiles() {
//place an ajax call to method "DeleteTempFiles"
//for deleting files in Temp folder
$.ajax({
type: "POST",
url: "Default.aspx/DeleteTempFiles",
data: "{}",
contentType: "application/json",
charset: "utf-8",
dataType: "json",
async: true,
cache: false,
success: function (msg) {
//message returned from server side method.
alert(msg.d);
},
error: function (x, e) {
alert("The call to the server side failed. " + x.responseText);
}
});
}
ajax 调用后台 WebMethod 方法删除 TempFolder 属性所对应的临时文件夹。代码如下:
protected void Page_Load(object sender, EventArgs e)
{ //save path of TempFolder in Session variable
Session["Path"] = C1Upload1.TempFolder;
}
[WebMethod]
public static string DeleteTempFiles()
{
try {
//Get path of TempFolder from Session object
string Path=HttpContext.Current.Session["Path"].ToString();
System.IO.DirectoryInfo TempFolder = new DirectoryInfo(HttpContext.Current.Server.MapPath(Path));
foreach (FileInfo file in TempFolder.GetFiles())
{
file.Open(FileMode.Open, FileAccess.ReadWrite);
file.Delete();
}
}
catch(Exception ex){
}
return "temp files deleted";
下载示例:Demo