不要覆盖通过FileUpload控件上传的文件 [英] Don't overwrite file uploaded through FileUpload control

查看:139
本文介绍了不要覆盖通过FileUpload控件上传的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

通过以​​下code:

 保护无效的button1_Click(对象发件人,EventArgs的发送)
    {
        如果(FileUpload1.HasFile)
        {
            串fileExt =
               System.IO.Path.GetExtension(FileUpload1.FileName);            如果(fileExt ==的.jpg|| fileExt ==.JPEG|| fileExt ==符.gif|| fileExt ==png格式)
            {
                尝试
                {
                    FileUpload1.SaveAs(使用Server.Mappath(../上传/原稿/+ FileUpload1.FileName));
                    Label1.Text =文件名:+
                        FileUpload1.PostedFile.FileName +< BR>中+
                        FileUpload1.PostedFile.ContentLength +KB< BR>中+
                        内容类型:+
                        FileUpload1.PostedFile.ContentType;
                }
                赶上(异常前)
                {
                    Label1.Text =错误:+ ex.Message.ToString();
                }
            }
            其他
            {
                Label1.Text =只有图像文件不允许的!
            }
        }
        其他
        {
            Label1.Text =您还没有指定的文件。
        }
    }

我希望让这个文件是否存在它改变了它的名字,有没有内置的功能,这?经典的ASP有一个参数,所以,当你上传说house.jpg,然后再次将成为住宅(1).JPG等等等等这是很有用的。


解决方案

 变种文件名= file.FileName;
VAR延长= Path.GetExtension(文件名);
VAR nameWithoutExtension = Path.GetFileNameWithoutExtension(文件名);变种I = 1;
而(File.Exists(uploadFolder +文件名))
{
    文件名= nameWithoutExtension.Trim()+(+ I +)+扩展名;
    我++;
}file.SaveAs(uploadFolder +文件名);

With the following code:

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            string fileExt =
               System.IO.Path.GetExtension(FileUpload1.FileName);

            if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".gif" || fileExt == ".png")
            {
                try
                {
                    FileUpload1.SaveAs(Server.MapPath("../uploads/originals/" + FileUpload1.FileName));
                    Label1.Text = "File name: " +
                        FileUpload1.PostedFile.FileName + "<br>" +
                        FileUpload1.PostedFile.ContentLength + " kb<br>" +
                        "Content type: " +
                        FileUpload1.PostedFile.ContentType;
                }
                catch (Exception ex)
                {
                    Label1.Text = "ERROR: " + ex.Message.ToString();
                }
            }
            else
            {
                Label1.Text = "Only image files are allowed!";
            }
        }
        else
        {
            Label1.Text = "You have not specified a file.";
        }


    }

I want to make it so that if the file exists it changes the name of it, is there any built in functionality for this? Classic ASP had a parameter so that when you upload say house.jpg, and then again it would become house(1).jpg etc etc which was useful.

解决方案

var fileName = file.FileName;
var extension = Path.GetExtension(fileName);
var nameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);

var i = 1;
while (File.Exists(uploadFolder + fileName))
{
    fileName = nameWithoutExtension.Trim() + " (" + i + ")" + extension;
    i++;
}

file.SaveAs(uploadFolder + fileName);

这篇关于不要覆盖通过FileUpload控件上传的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆