پاک کردن محتویات کنترل AsyncFileUpload پس از آپلود و بازبینی صفحه در ASP.Net
با سلام در اینجا پاک کردن محتویات کنترل AsyncFileUpload پس از آپلود و بازبینی صفحه در ASP.Net را توضیح خواهیم داد . با ما همراه باشید .
پاک کردن Server Side
کنترل AsyncFileUpload فایل آپلود شده با ترکیبی از یک GUID و ترکیب آن ClientID است. از این رو پس از آپلود فایل شما نیاز به پاک کردن محتویات با حذف این کلید به روش زیر دارید .
C #
protected void FileUploadComplete(object sender, EventArgs e)
{
string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);
AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath("Uploads/") + filename);
ClearContents(sender as Control);
}
private void ClearContents(Control control)
{
for (var i = 0; i < Session.Keys.Count; i++)
{
if (Session.Keys[i].Contains(control.ClientID))
{
Session.Remove(Session.Keys[i]);
break;
}
}
}
VB.Net
Protected Sub FileUploadComplete(ByVal sender As Object, ByVal e As EventArgs)
Dim filename As String = System.IO.Path.GetFileName(AsyncFileUpload1.FileName)
AsyncFileUpload1.SaveAs(Server.MapPath("Uploads/") + filename)
ClearContents(CType(sender, Control))
End Sub
Private Sub ClearContents(ByVal Control As Control)
For i As Integer = 0 To Session.Keys.Count - 1
If Session.Keys(i).Contains(Control.ClientID) Then
Session.Remove(Session.Keys(i))
Exit For
End If
Next
End Sub
پاک کردن Client Side
در حال حاضر روش بالا فایل را از جلسه حذف می کند، اما جعبه متن کنترل AsyncFileUpload را پاک نمی کند .
اساسا کنترل شامل یک جعبه متن readOnly است. روش جاوا اسکریپت زیر محتویات کنترل AsyncFileUpload را پاک می کند .
<script type = "text/javascript">
function clearContents() {
var AsyncFileUpload = $get("<%=AsyncFileUpload1.ClientID%>");
var txts = AsyncFileUpload.getElementsByTagName("input");
for (var i = 0; i < txts.length; i++) {
if (txts[i].type == "text") {
txts[i].value = "";
txts[i].style.backgroundColor = "white";
}
}
}
window.onload = clearContents;
</script>
شما می توانید این تابع را در هر کجا که می خواهید فراخوانی کنید، در بالا آن را در پنجره رویداد onload بارگذاری می کنیم تا کنترل در هر باربارگذاری، تجدید یا بازبینی صفحه دوباره پاک شود. در صورتی که می خواهید آن را پس از ارسال فایل در سرور پاک کنید، آن را در رویداد OnClientUploadComplete از کنترل AsyncFileUpload به روش زیر انجام دهید .
<script type = "text/javascript">
function uploadComplete(sender) {
clearContents();
}
</script>
GIF زیر توضیح می دهد چگونه این ترفند ASP.Net AJAX Control Toolkit AsyncFileUpload کنترل را زمانی که صفحه تازه سازی، بارگذاری مجدد، بازبینی و همچنین یکبار فایل آپلود می شود پاک می کند .

بنابراین با استفاده از تکنیک client side و server side، می توانیم فایل آپلود شده را از کنترل AsyncFileUpload پاک کنیم