用FileUpLoad上传文件关于文件名的问题

「已注销」 2010-03-13 10:17:14


protected void Button2_Click(object sender, EventArgs e)
{
Boolean fileOk = false;
string path = Server.MapPath("~/upload/");
//判断是否已经选取文件
if (FileUpload1.HasFile)
{
//取得文件的扩展名,并转换成小写
string fileExtension = System.IO.Path.GetExtension(this.FileUpload1.FileName).ToLower();
//限定只能上传jpg和gif图片
string[] allowExtension = { ".jpg", ".gif",".jpeg" };
//对上传的文件的类型进行一个个匹对
for (int i = 0; i < allowExtension.Length; i++)
{
if (fileExtension == allowExtension[i])
{
fileOk = true;
break;
}
}
//对上传文件的大小进行检测,限定文件最大不超过10M
if (FileUpload1.PostedFile.ContentLength > 10240000)
{
fileOk = false;
}
//最后的结果
if (fileOk)
{
try
{
//string fileName = userId + DateTime.Now.ToString() + this.FileUpload1.FileName;
this.FileUpload1.PostedFile.SaveAs(path + this.FileUpload1.FileName);
this.Label4.Text = "上传成功,上传后的文件名为"+ fileName;
}
catch
{
this.Label4.Text = "上传失败!";
}
}
else
{
Response.Write("<script>window.alert('文件类型或者文件大小超出10M')</script>");
}

}




我想上传的时候,动态改变文件的名字,让它变成当前用户+当前时间+文件名,为什么这样上传就失败,不改变使用原来的名字可以上传成功,求解!!!
...全文
498 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-03-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 y_2716 的回复:]
引用 8 楼 yao970953039 的回复:
如何用DateTime得到这样的时间格式:201003131049
翻译过来就是:10年3月13号10点49


这样

C# code
string newfilename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.D……
[/Quote]
谢谢,就是这样的。。问题解决了,非常感谢大家的帮助!
Y_2716 2010-03-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yao970953039 的回复:]
如何用DateTime得到这样的时间格式:201003131049
翻译过来就是:10年3月13号10点49
[/Quote]

这样
string newfilename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString("00") + DateTime.Now.Hour.ToString("00")  + DateTime.Now.Minute.ToString("00")
「已注销」 2010-03-13
  • 打赏
  • 举报
回复
如何用DateTime得到这样的时间格式:201003131049
翻译过来就是:10年3月13号10点49
Y_2716 2010-03-13
  • 打赏
  • 举报
回复

string fromfilename = fileToUpload.PostedFile.FileName;
string sOriginalFileName = fromfilename.Substring(fromfilename.LastIndexOf("\\")+1);
string sFileExt = sOriginalFileName.Substring(sOriginalFileName.LastIndexOf(".")).ToLower();
string newfilename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString("00") + DateTime.Now.Hour.ToString("00") + DateTime.Now.Minute.ToString("00")+ DateTime.Now.Second.ToString()+ pubfun.GetRandNum(5)+sFileExt;
string togo = "/user/" + newfilename;
model.pic = togo;
if (pubfiles.CheckValidExt(sFileExt,openokfiles))
{
try
{
double sgfileSize = System.Math.Round((double.Parse(fileToUpload.PostedFile.ContentLength.ToString())/1048576),2);
//managesgspace文件大小
if (System.Math.Round(managesgspace,2)>sgfileSize)
{
//managemaxspace:允许上传最大文件值
if (System.Math.Round(managemaxspace,2)>totalsize+sgfileSize)
{
fileToUpload.PostedFile.SaveAs(Server.MapPath(togo));
upmessLabel.Text=LAN.R2.GetString("ty_upload")+LAN.R2.GetString("ty_dowithok")+LAN.R2.GetString("ty_filesize")+sgfileSize.ToString()+"M";
bll.Add(model);
CommonClass.MsgBox2(KYCMS.LAN.R2.GetString("ty_dowithok"), "pic_list.aspx");
}
}
}
catch(Exception ex)
{
CommonClass.MsgBox("123");
}
}
else
{
CommonClass.MsgBox("false");
upmessLabel.Text=LAN.R2.GetString("ty_pleasepermifile");
return;
}

}

catch(Exception ex)
{
upmessLabel.Text=LAN.R2.GetString("ty_upload")+LAN.R2.GetString("ty_dowitherror")+ex.ToString();
return;
}
zcxverygood123456 2010-03-13
  • 打赏
  • 举报
回复

//公共部分

//enctype="multipart/form-data"
//<input type="file" id="upFile" runat="server" NAME="upFile">
//---------------------------------------------------------------

自动根据日期和文件大小不同为文件命名(基础详解)

if(inputFile.PostedFile!="") //检查上传文件不为空
{
string strName = inputFile.PostedFile.FileName;
int intExt = strName.LastIndexOf("."); //取得文件名(抱括路径)里最后一个"."的索引
string strExt = strName.Substring(intExt); //取得文件扩展名
//自动根据日期和文件大小不同为文件命名,确保文件名不重复
DateTime datNow = DateTime.Now;
string strNewName = datNow.DayOfYear.ToString() + inputFile.PostedFile.ContentLength.ToString() + strExt;
//int intPath = strName.LastIndexOf("\\"); //取得文件名(包括路径)里最后一个"\"的索引
//string strNewName = strName.Substring(intPath); //取得文件名(不包括路径)
string strSaveDir = "./upload/"; //设定上传文件的保存路径
inputFile.PostedFile.SaveAs(Server.MapPath(strSaveDir + strNewName));
//inputFile.PostedFile.SaveAs(Server.MapPath("\\upload\\"+strNewName)); //在这里里"\"必须用"\\"代替
//得到这个文件的相关属性:文件名,文件类型,文件大小
labelUpResult.Text = "上传成功!";
labelFileName.Text = "文件源:" + strName;
//labelFileExt.Text = "文件类型:" + inputFile.PostedFile.ContentType + "( " + strExt + " )";
labelFileExt.Text = "文件类型:" + strExt ;
labelFileSize.Text = "文件大小:" + (inputFile.PostedFile.ContentLength / 1024).ToString() + " K Byte(s)";
}
}
「已注销」 2010-03-13
  • 打赏
  • 举报
回复
原来是字符中有空格啊,
如何用DateTime得到201003131032这样的时间? 原来的是2010-03-13 10:32
周公 2010-03-13
  • 打赏
  • 举报
回复
# protected void btnUpload_Click(object sender, EventArgs e)
# {
# //判断是否上传了文件
# if (fileUpload.HasFile)
# {
# //指定上传文件在服务器上的保存路径
# string savePath = Server.MapPath("~/upload/");
# //检查服务器上是否存在这个物理路径,如果不存在则创建
# if (!System.IO.Directory.Exists(savePath))
# {
# //需要注意的是,需要对这个物理路径有足够的权限,否则会报错
# //另外,这个路径应该是在网站之下,而将网站部署在C盘却把上传文件保存在D盘
# System.IO.Directory.CreateDirectory(savePath);
# }
# savePath = savePath + "\\" + fileUpload.FileName;
# fileUpload.SaveAs(savePath);//保存文件
# //不过需要注意的是,在客户端访问却需要指定的是URL地址,而不是在服务器上的物理地址
# literal.Text = string.Format("<a href='upload/{0}'>upload/{0}</a>", fileUpload.FileName);
# }
周公 2010-03-13
  • 打赏
  • 举报
回复
string fileName = path +userId + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + 
this.FileUpload1.PostedFile.SaveAs(fileName );
this.Label4.Text = "上传成功,上传后的文件名为"+ fileName;
周公 2010-03-13
  • 打赏
  • 举报
回复
asp.net 夜话之六:asp.net基本控件
asp.net服务器控件是微软为了方便开发者开发而推出的一系列控件,它们都以类似的方式出现在Visual Studio 2005的源视图里,*代表了控件名,如就表示这是一个Button控件。asp.net服务器控件除了提供HTML服务器控件所能提供的功能之外,还有很多功能更为复杂的控件。这些控件可以分为简单控件、容器控件、数据绑定控件、数据源控件和数据验证控及用户自己根据自己业务需要将一些控件组合在一起组成的用户控件等。asp.net控件的特点与HTML服务器控件类似,也有如下特点:(1)asp.net服务器控件必须有一个在当前页面中唯一的ID属性和runat=”server”属性;(2)asp.net服务器控件必须放在服务器端表单中;(3)asp.net服务器控件最终会被解释成普通 HTML标记发送到客户端浏览器。本文主要介绍以下控件:Button控件TextBox控件Web服务器控件的特殊客户端事件FileUpload控件 Literal控件Panel控件PlaceHolder控件

FileUpload控件
FileUpload控件是一个很重要的控件,它被Web服务器最终解释为形如 “<input type=”file”…/>”这样的普通HTML控件。它有如下常见属性:

属性名 数据类型 说明
FileBytes byte[] 上传的文件内容的字节数组表示形式
FileContent Stream 上传文件的数据流
FileName string 上传文件在客户端的名字
HasFile bool 指示是否上传了文件
PostedFile HttpPostedFile 获取文件基础的HttpPostedFile对象
Im_Sorry 2010-03-13
  • 打赏
  • 举报
回复
获得当前时间+ 当前用户+文件名, 拼接一下就好了~~~~~~~ 你可能拼接错了~
无语中V5 2010-03-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hou306010849 的回复:]
获得当前时间+ 当前用户+文件名, 拼接一下就好了~~~~~~~ 你可能拼接错了~
[/Quote]
就是这样实现的。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧