关于图片上传问题..
我想同时上传两个图片在页面上放了两个FileUP控件.
图片的文件名是通过fileup.SaveShow方法中的DateTime.Now.ToString("yyyyMMddhhmmss")生成的.
执行顺序是
if (FileUpload1.HasFile)//上传图片1
{
Up fileup = new Up();
Fileup = fileup.SaveShow(FileUpload1, model);
model.Picture = Fileup;
}
else
{
Fileup = string.Empty;
model.Picture = Fileup;
}
if (FileUpload2.HasFile)//上传图片2
{
Up fileup = new Up();
Fileup2 = fileup.SaveShow(FileUpload2, model);
model.Picture2 = Fileup2;
}
else
{
Fileup2 = string.Empty;
model.Picture2 = Fileup2;
}
但是查看上传图片目录的时候.里面就只有一张图片.是FileUpload2中传的.会不会是因为生成的文件名是一样的.而覆盖了.可是我设了断点以后.发现.两个文件名是不一样的.并且两张图都传到了指定的目录..
不知道是怎么回事.. --------------------编程问答-------------------- 设断点以后,时间不一样了啊
在文件名里加个1或2分开来吧 --------------------编程问答-------------------- --------------------编程问答-------------------- 那两个文件又不是同时生成的.时间怎么会一样的.第二个图片应该晚一些呀? --------------------编程问答-------------------- 原因 是你的 上传文件 大小的限制,
而且他不会报错。什么都不显示。
在配置文件 加上:
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900"/>
就OK 了。 --------------------编程问答-------------------- string strFileNewName = DateTime.Now.ToString("yyyyMMddhhmmss")
在这后面再加个随机生成的数字.怎么弄? --------------------编程问答-------------------- TO:live_7sky
那我设了断点以后.为什么两张图片都能传到指定的目录? --------------------编程问答-------------------- 顶一下~~~~~~~ --------------------编程问答-------------------- 加个毫秒吧
DateTime.Now.ToString("yyyyMmddHHmmssff") --------------------编程问答-------------------- DateTime.Now.ToString("yyyyMmddHHmmssfff")
多个f
估计你的服务器不会这么恐怖,一毫秒同时上传2张图片 --------------------编程问答-------------------- 第一个IF 最后一个赋值应该是:
model.Picture1 = Fileup1
else里面也是:
model.Picture1 = Fileup1;
试试
--------------------编程问答--------------------
这是受上传文件大小的限制,<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900"/> 默认是 4000 ,
至于设置断点,能正确上传 ,和 直接上传,只能上传一张,但是不报错。应该和 服务器处理有关,具体的我也没有搞清楚。
不知道 什么内幕。
我以前用 3个上传控件,也是遇到你那样的情况,后来在ASP.NET 2.0 书上,看到解决办法,但是解释得非常模糊。
如果你找到 原因了,麻烦告诉我一声;E: haijun.qin@gmail.com --------------------编程问答-------------------- 但是这个问题的 解决办法 就是:
加上:
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900"/>
如果你很急的话,直接加上这句话,就可以了,至于原因 可以 以后慢慢 研究 。 --------------------编程问答-------------------- --------------------编程问答-------------------- 你电脑运行速度太快,所以生成的文件名一样
fileup.SaveShow方法中的DateTime.Now.ToString("yyyyMMddhhmmss")
改为 DateTime.Now.Ticks.ToString()
如果你的电脑还是那么快...加随机数吧 --------------------编程问答-------------------- 我来给你分析一下你的这个问题吧:
(1)你调试没有问题是因为,你调试的时候时间是仍然在走的,因为你调试的时间大于1秒,所以当你调试的时候,生成的文件名就自然不同了,这样两个图片就可以都传上去了,如果直接执行,因为FileUpload1这个控件是事先讲你要上传的图片组合成二进制数据流,准备好上传前的准备才执行事件的,所以一旦执行事件,速度就很快了,一般的文件是用不了一秒的!
(2)至于楼上说<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900"/> 等等,纯属无稽之谈,这局话是可以设置上传的文件的大小,但是如果要是大的话,根本就通不过
FileUpload1的事先组合数据流,根本就不会执行后台的事件了,会直接返回“无法显示该页的”
(3)解决办法:你直接在两个生成的文件名前,加两个不同的标识吧!
如果还不能解决,在此处留言:http://i.mop.com/ourgoodluck ,说明详细问题,本人会在24小时内,写出源码回复给你! --------------------编程问答--------------------
那为什么 同样的 2张文件,设置 <httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900"/> 就可以上传 2张,不设置 就只能上传 1张,
楼上的解释一下。 --------------------编程问答-------------------- 最好文件名不要一样,我也碰到过,调试时不容易发现 --------------------编程问答--------------------
首先,这和 文件名 没有关系 ,我的图片文件名绝对不一样。
就是 aa.jpg bb.jpg 保存到服务器 也是设置的 aa.jpg bb.jpg --------------------编程问答-------------------- 楼主应该考虑一下上传文件的大小,然后再用上传的当前服务器时间作为上传图片的文件名应该可以避免文件重名的问题 --------------------编程问答--------------------
虽然 我不是 楼主,但是 我也很想 知道 答案。 楼主大概不会结贴了。
补充:.NET技术 , ASP.NET