asp.net图片上传 图片存放在按日期生成的文件夹中

时间:2022-10-05 12:43:37
功能描述:
将上传的图片存放在,根据当天日期生成的文件中。

错误: 当天第一次上传的图片无法保存,从第二张图片开始就能保存。

调试发现当天的第一次上传只创建了一个以当天日期为名的文件夹。
程序提示错误是:虚拟路径无效。

26 个解决方案

#1


首先把当天的日期,串成一个字符串,如20130507
然后在存储任一文件之前,先判断目录是否存在,如果不存在,创建这个目录,
反之,不用创建目录,直接保存文件即可。

#2


路径没有取对,把代码贴出来。

#3


代码发出来...

#4


路径合成,然后检查该路径是否存在,不存在就创建,存在就保存文件

#5


先建文件夹,再保存

#6


asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中

#7


这是今天第一次上传图片。
第二次在上传就可以了

#8


引用 6 楼 tan0303 的回复:
asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中

你拿第二天可以保存的路径对比一下看看那有不一样的地方!

#9


CheckFile():方法是检查文件夹是否存在,不存在就创建一个。

#10


不用对比现在就可以上传

#11


引用 6 楼 tan0303 的回复:
asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中


先判断是否存在文件夹  然后在存图片

#12


我认为是刚创建的文件夹,无法获取。

#13


引用 11 楼 dr592112441 的回复:
Quote: 引用 6 楼 tan0303 的回复:

asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中


先判断是否存在文件夹  然后在存图片


CheckFile()  方法中已经判断过了
 private static string CheckFile()
        {
            string tiem = DateTime.Now.ToString("yyyyMMdd");
            string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);
            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory((folder + "/"));
                return folder;
            }
            return "/BusinessLicenseUploadFiles/" + tiem + "/";

        }

#14


string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);

后面加个/

string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem+"/");

#15


引用 14 楼 5653325 的回复:
string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);

后面加个/

string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem+"/");


路径改下

#16


 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");

#17


引用 14 楼 5653325 的回复:
string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);

后面加个/

string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem+"/");


加上也不行, 报的错和上面一样。

#18


               System.IO.Directory.CreateDirectory((folder + "/"));
                return folder+"/";

#19


我错了,应该是把return folder;直接删除不要
private static string CheckFile()
        {
            string tiem = DateTime.Now.ToString("yyyyMMdd");
            string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);
            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory((folder + "/"));
            }
            return "/BusinessLicenseUploadFiles/" + tiem + "/";

        }

#20


引用 16 楼 5653325 的回复:
 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");


该成这样也不行。
我任务不是着的错误。程序运行到报错那,已经在新建了一个当天日期的文件夹“20130507”。

我在重新运行程序(什么都不修改),就能上传成功。

#21


引用 20 楼 tan0303 的回复:
Quote: 引用 16 楼 5653325 的回复:

 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");


该成这样也不行。
我任务不是着的错误。程序运行到报错那,已经在新建了一个当天日期的文件夹“20130507”。

我在重新运行程序(什么都不修改),就能上传成功。


因为你的folder 已经处理成Server.MapPath,如果此时返回又处理一次,那肯定是会出错的,所以直接不做处理,让他直接执行下边的"/BusinessLicenseUploadFiles/" + tiem + "/";

#22


谢谢,各位。
问题截取了。
十九楼正解。

#23


十九楼的朋友,能不能给解释一下为什么。

#24


为什么直接删除不要呢?

#25


引用 21 楼 liuchaolin 的回复:
Quote: 引用 20 楼 tan0303 的回复:

Quote: 引用 16 楼 5653325 的回复:

 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");


该成这样也不行。
我任务不是着的错误。程序运行到报错那,已经在新建了一个当天日期的文件夹“20130507”。

我在重新运行程序(什么都不修改),就能上传成功。


因为你的folder 已经处理成Server.MapPath,如果此时返回又处理一次,那肯定是会出错的,所以直接不做处理,让他直接执行下边的"/BusinessLicenseUploadFiles/" + tiem + "/";

这里不是说了吗?

#26


asp.net图片上传 图片存放在按日期生成的文件夹中

#1


首先把当天的日期,串成一个字符串,如20130507
然后在存储任一文件之前,先判断目录是否存在,如果不存在,创建这个目录,
反之,不用创建目录,直接保存文件即可。

#2


路径没有取对,把代码贴出来。

#3


代码发出来...

#4


路径合成,然后检查该路径是否存在,不存在就创建,存在就保存文件

#5


先建文件夹,再保存

#6


asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中

#7


这是今天第一次上传图片。
第二次在上传就可以了

#8


引用 6 楼 tan0303 的回复:
asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中

你拿第二天可以保存的路径对比一下看看那有不一样的地方!

#9


CheckFile():方法是检查文件夹是否存在,不存在就创建一个。

#10


不用对比现在就可以上传

#11


引用 6 楼 tan0303 的回复:
asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中


先判断是否存在文件夹  然后在存图片

#12


我认为是刚创建的文件夹,无法获取。

#13


引用 11 楼 dr592112441 的回复:
Quote: 引用 6 楼 tan0303 的回复:

asp.net图片上传 图片存放在按日期生成的文件夹中asp.net图片上传 图片存放在按日期生成的文件夹中


先判断是否存在文件夹  然后在存图片


CheckFile()  方法中已经判断过了
 private static string CheckFile()
        {
            string tiem = DateTime.Now.ToString("yyyyMMdd");
            string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);
            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory((folder + "/"));
                return folder;
            }
            return "/BusinessLicenseUploadFiles/" + tiem + "/";

        }

#14


string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);

后面加个/

string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem+"/");

#15


引用 14 楼 5653325 的回复:
string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);

后面加个/

string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem+"/");


路径改下

#16


 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");

#17


引用 14 楼 5653325 的回复:
string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);

后面加个/

string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem+"/");


加上也不行, 报的错和上面一样。

#18


               System.IO.Directory.CreateDirectory((folder + "/"));
                return folder+"/";

#19


我错了,应该是把return folder;直接删除不要
private static string CheckFile()
        {
            string tiem = DateTime.Now.ToString("yyyyMMdd");
            string folder = System.Web.HttpContext.Current.Server.MapPath("/BusinessLicenseUploadFiles/" + tiem);
            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory((folder + "/"));
            }
            return "/BusinessLicenseUploadFiles/" + tiem + "/";

        }

#20


引用 16 楼 5653325 的回复:
 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");


该成这样也不行。
我任务不是着的错误。程序运行到报错那,已经在新建了一个当天日期的文件夹“20130507”。

我在重新运行程序(什么都不修改),就能上传成功。

#21


引用 20 楼 tan0303 的回复:
Quote: 引用 16 楼 5653325 的回复:

 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");


该成这样也不行。
我任务不是着的错误。程序运行到报错那,已经在新建了一个当天日期的文件夹“20130507”。

我在重新运行程序(什么都不修改),就能上传成功。


因为你的folder 已经处理成Server.MapPath,如果此时返回又处理一次,那肯定是会出错的,所以直接不做处理,让他直接执行下边的"/BusinessLicenseUploadFiles/" + tiem + "/";

#22


谢谢,各位。
问题截取了。
十九楼正解。

#23


十九楼的朋友,能不能给解释一下为什么。

#24


为什么直接删除不要呢?

#25


引用 21 楼 liuchaolin 的回复:
Quote: 引用 20 楼 tan0303 的回复:

Quote: 引用 16 楼 5653325 的回复:

 string folder = System.Web.HttpContext.Current.Server.MapPath("~/BusinessLicenseUploadFiles/" + tiem+"/");


该成这样也不行。
我任务不是着的错误。程序运行到报错那,已经在新建了一个当天日期的文件夹“20130507”。

我在重新运行程序(什么都不修改),就能上传成功。


因为你的folder 已经处理成Server.MapPath,如果此时返回又处理一次,那肯定是会出错的,所以直接不做处理,让他直接执行下边的"/BusinessLicenseUploadFiles/" + tiem + "/";

这里不是说了吗?

#26


asp.net图片上传 图片存放在按日期生成的文件夹中