Tự động đổi tên File khi Upload trong Asp.net
(FileUpload ReName File Before Upload in ASP.NET) – Khi Upload file lên Server trong trường hợp file Upload trùng với tên file đã tồn tại, chương trình sẽ tự động ghi đè file mới lên file cũ. Vậy làm sao để giải quyết vấn đề này? Có một cách để giải quyết, đó là tự động đổi tên file ngay trong quá trình Upload lên Server. Bài viết dưới đây sẽ hướng dẫn các bạn làm điều đó, và mỗi khi Upload File chương trình sẽ tự động lấy tên file gốc cộng với thời gian Upload. Và như vậy khi Upload file bạn sẽ không bao giờ lo sợ vấn đề bị trùng tên nữa.
- B1: Tạo Project trong Microsoft Visual Studio 2010
- B2: Mở file Default.aspx dưới dạng HTML và nhập mã HTML
C# Code
<%@ Page
Title="Rename File
Name during Uploading in Asp.Net" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RenameFileNameDuringUploading._Default" %>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<table cellpadding="3"
cellspacing="5"
border="0"
width="50%">
<tr>
<td>
<div
class="panel
panel-default">
<div
class="panel-heading">
<asp:label id="lblHeader" runat="server" Text="File Upload"></asp:label>
</div>
<div
class="panel-body">
<table cellspacing="2"
cellpadding="3"
border="0"
width="100%">
<tr>
<td style="width:25%;">
<asp:label id="plFileName"
runat="server"
Text="File Name
(*)"></asp:label>
</td>
<td>
<asp:FileUpload ID="FileUpload"
runat="server"
Width="150px"
/><br />
<asp:CustomValidator id="valFile"
runat="server"
CssClass="NormalRed"
ValidationGroup="validate"
OnServerValidate="valFile_ServerValidate"
ErrorMessage="You
Must Upload A File" Display="Dynamic"></asp:CustomValidator>
</td>
</tr>
<tr>
<td colspan="2">
<asp:label id="lblMessage"
runat="server"
Visible="false"></asp:label><br />
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<div class="btn-group">
<asp:LinkButton id="cmdUpload"
runat="server"
CssClass="btn
btn-small" OnClick="cmdUpload_Click" ValidationGroup="validate" Causesvalidation="true">
<i class="icon-upload"></i> <asp:label id="lblUpload" runat="server" Text="Upload"></asp:label>
</asp:LinkButton>
</div>
</div>
</div>
</td>
</tr>
</table>
</asp:Content>
VB.NET Code
<%@ Page Title="How to extract a folder from zip file using SharpZipLib in ASP.Net" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="UsingSharpZipLibUnzipFile._Default" %>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<table cellpadding="3" cellspacing="5" border="0" width="50%">
<tr>
<td>
<div class="panel panel-default">
<div class="panel-heading">
<asp:label id="lblHeader" runat="server" Text="File Upload"></asp:label>
</div>
<div class="panel-body">
<table cellspacing="2" cellpadding="3" border="0" width="100%">
<tr>
<td style="width:25%;">
<asp:label id="plFileName" runat="server" Text="File Name (*)"></asp:label>
</td>
<td>
<asp:FileUpload ID="FileUpload" runat="server" Width="150px" /><br />
<asp:CustomValidator id="valFile" runat="server" CssClass="NormalRed" ValidationGroup="validate" OnServerValidate="valFile_ServerValidate" ErrorMessage="You Must Upload A File" Display="Dynamic"></asp:CustomValidator>
<asp:CustomValidator id="valType" runat="server" CssClass="NormalRed" ValidationGroup="validate" OnServerValidate="valType_ServerValidate" Display="Dynamic"></asp:CustomValidator>
</td>
</tr>
<tr>
<td colspan="2">
<asp:label id="lblMessage" runat="server" Visible="false"></asp:label><br />
</td>
</tr>
</table>
</div>
<div class="modal-footer">
<div class="btn-group">
<asp:LinkButton id="cmdUpload" runat="server" CssClass="btn btn-small" OnClick="cmdUpload_Click" ValidationGroup="validate" Causesvalidation="true">
<i class="icon-upload"></i> <asp:label id="lblUpload" runat="server" Text="Upload"></asp:label>
</asp:LinkButton>
</div>
</div>
</div>
</td>
</tr>
</table>
</asp:Content>
- B3: Viết Code cho file Default.aspx
C# Code
//Visit http://www.laptrinhdotnet.com
for more ASP.NET Tutorials
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Diagnostics;
using System.Web.UI;
using System.Web;
using System.Web.UI.WebControls;
namespace RenameFileNameDuringUploading
{
public partial class _Default :
System.Web.UI.Page
{
#region
"Private Members"
string FilePath = "";
#endregion
#region
"Private Methods"
protected string
UploadFile(HttpPostedFile file)
{
string fileName = null;
string fileExtension = null;
string strDate = DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss");
SetFilePath();
fileExtension = Path.GetExtension(file.FileName).Replace(".", "");
fileName = file.FileName.Substring(file.FileName.LastIndexOf("\\\\") + 1);
fileName = fileName.Substring(0, fileName.LastIndexOf(fileExtension)) +
strDate + "." + fileExtension;
FilePath = FilePath + fileName;
file.SaveAs(FilePath);
return fileName;
}
private void
SetFilePath()
{
FilePath = MapPath("~/Upload/");
if (!Directory.Exists(FilePath))
{
Directory.CreateDirectory(FilePath);
}
}
#endregion
#region
"Event Handles"
protected void
cmdUpload_Click(object sender, System.EventArgs e)
{
if (Page.IsValid)
{
try
{
string sFileName = "";
HttpFileCollection hfc =
Request.Files;
for (int
i = 0; i <= hfc.Count - 1; i++)
{
HttpPostedFile
hpf = hfc[i];
if (hpf.ContentLength > 0)
{
sFileName =
UploadFile(hpf);
}
}
}
catch
{
lblMessage.Text = "Upload file
Error";
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Visible = true;
}
finally
{
lblMessage.Text = "Upload file
Sucessfully";
lblMessage.ForeColor = System.Drawing.Color.Green;
lblMessage.Visible = true;
}
}
}
protected void
valFile_ServerValidate(object source, ServerValidateEventArgs args)
{
if (FileUpload.PostedFile != null)
{
if (FileUpload.PostedFile.ContentLength
> 0)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
}
#endregion
}
}
VB.NET Code
'Visit http://www.laptrinhdotnet.com
for more ASP.NET Tutorials
Imports System.IO
Namespace RenameFileNameDuringUploading
Public Class _Default
Inherits System.Web.UI.Page
#Region "Private
Members"
Private FilePath As String = ""
#End Region
#Region "Private
Methods"
Protected Function
UploadFile(ByVal file As
HttpPostedFile) As
String
Dim fileName As String
Dim fileExtension As String
Dim strDate As String = Now.ToString("MM_dd_yyyy_hh_mm_ss")
SetFilePath()
fileExtension = Replace(Path.GetExtension(file.FileName),
".", "")
fileName = file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1)
fileName = fileName.Substring(0, fileName.LastIndexOf(fileExtension))
& strDate & "." &
fileExtension
FilePath = FilePath + fileName
file.SaveAs(FilePath)
Return fileName
End Function
Private Sub
SetFilePath()
FilePath = MapPath("~/Upload/")
If Not Directory.Exists(FilePath) Then
Directory.CreateDirectory(FilePath)
End If
End Sub
#End Region
#Region "Event
Handles"
Private Sub
cmdUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
cmdUpload.Click
If Page.IsValid Then
Try
Dim sFileName As
String = ""
Dim hfc As
HttpFileCollection = Request.Files
For i As
Integer = 0 To
hfc.Count - 1
Dim hpf As HttpPostedFile = hfc(i)
If
hpf.ContentLength > 0 Then
sFileName =
UploadFile(hpf)
End If
Next i
Catch ex As
Exception
lblMessage.Text = ex.Message
lblMessage.ForeColor =
System.Drawing.Color.Red
lblMessage.Visible = True
Exit Sub
Finally
lblMessage.Text = "Upload file
Sucessfully"
lblMessage.ForeColor = System.Drawing.Color.Green
lblMessage.Visible = True
End Try
End If
End Sub
Private Sub
valFile_ServerValidate(ByVal source As System.Object, ByVal args As
System.Web.UI.WebControls.ServerValidateEventArgs)
Handles valFile.ServerValidate
Try
If Not
(FileUpload.PostedFile Is Nothing) Then
If (FileUpload.PostedFile.ContentLength
> 0) Then
args.IsValid = True
Return
End If
End If
args.IsValid = False
Catch exc As Exception
End Try
End Sub
#End Region
End Class
End Namespace
Chúc các bạn thành công!
Quang Bình
No Comment to " Tự động đổi tên File khi Upload trong Asp.net "