//将附件路径
string str = this.FileUpload1.PostedFile.FileName;
//判断附件不能为空!
if (str == string.Empty)
{
Response.Write(bc.MessageBox("上传文件不能为空!"));
return;
}
//获取附件名称
string fileName = str.Substring(str.LastIndexOf("\\") + 1);
path = "..\\file\\" + fileName; //设置附件上传到的服务器路径
FileInfo fileInfo = new FileInfo(str); //获取文件信息
long fileSize = (fileInfo.Length / 1024) / 1024; //获取文件大小
if (fileSize > 10) //控制文件大小不能超过10M
{
Response.Write(bc.MessageBox("文件大小不能超过10M !"));
return; //不能继续执行
}
//上传送文件的相关信息保存到服务器中
bool bl = bc.ExecSQL("INSERT INTO tb_file (fileSender, fileAccepter, fileTitle, fileTime, fileContent, path,examine,fileName) VALUES('" + Convert.ToString(Session["loginName"]) + "','" + ddlName.Text + "','" + txtTitle.Text + "','" + DateTime.Today.ToString() + "','" + txtContent.Text + "','" + path + "','未接收','" + fileName + "')");
if (bl)
{
Response.Write(bc.MessageBox("文件传送成功!"));
}
else
{
Response.Write(bc.MessageBox("网络故障,文件传送失败!"));
return;
}
this.FileUpload1.PostedFile.SaveAs(Server.MapPath(path)); //将文件保存到服务器上
代码是这样的,我知道string str = this.FileUpload1.PostedFile.FileName; 这个不对,因为在服务器上,他获取的是服务器上的本地硬盘的路径文件,肯定找不到文件,但是我换成string filepath=Server.MapPath("file/"+Path.GetFileName(fileup.PostedFile.FileName)); 也是不对的,因为 这个获取的返回与Web服务器上指定虚拟路径相对应的绝对路径 , 我道理应该怎么才能让上传本地文件到服务器? 网站是部署在远程服务器上的。 以前好像写asp 的时候有个组件之间上传的,asp。net 应该也有相关的组件,但是不通过组件可以上传吗?
string str = this.FileUpload1.PostedFile.FileName;
//判断附件不能为空!
if (str == string.Empty)
{
Response.Write(bc.MessageBox("上传文件不能为空!"));
return;
}
//获取附件名称
string fileName = str.Substring(str.LastIndexOf("\\") + 1);
path = "..\\file\\" + fileName; //设置附件上传到的服务器路径
FileInfo fileInfo = new FileInfo(str); //获取文件信息
long fileSize = (fileInfo.Length / 1024) / 1024; //获取文件大小
if (fileSize > 10) //控制文件大小不能超过10M
{
Response.Write(bc.MessageBox("文件大小不能超过10M !"));
return; //不能继续执行
}
//上传送文件的相关信息保存到服务器中
bool bl = bc.ExecSQL("INSERT INTO tb_file (fileSender, fileAccepter, fileTitle, fileTime, fileContent, path,examine,fileName) VALUES('" + Convert.ToString(Session["loginName"]) + "','" + ddlName.Text + "','" + txtTitle.Text + "','" + DateTime.Today.ToString() + "','" + txtContent.Text + "','" + path + "','未接收','" + fileName + "')");
if (bl)
{
Response.Write(bc.MessageBox("文件传送成功!"));
}
else
{
Response.Write(bc.MessageBox("网络故障,文件传送失败!"));
return;
}
this.FileUpload1.PostedFile.SaveAs(Server.MapPath(path)); //将文件保存到服务器上
代码是这样的,我知道string str = this.FileUpload1.PostedFile.FileName; 这个不对,因为在服务器上,他获取的是服务器上的本地硬盘的路径文件,肯定找不到文件,但是我换成string filepath=Server.MapPath("file/"+Path.GetFileName(fileup.PostedFile.FileName)); 也是不对的,因为 这个获取的返回与Web服务器上指定虚拟路径相对应的绝对路径 , 我道理应该怎么才能让上传本地文件到服务器? 网站是部署在远程服务器上的。 以前好像写asp 的时候有个组件之间上传的,asp。net 应该也有相关的组件,但是不通过组件可以上传吗?
string filepath=Server.MapPath("file/"+Path.GetFileName(fileup.PostedFile.FileName));
// Path.GetFileName返回指定路径字符串的文件名和扩展名
string img="file/"+Path.GetFileName(fileup.PostedFile.FileName);//用于保存到数据库中的上传文件URL路径
int ij= img.LastIndexOf("."); //取得文件扩展名
if(ij>0)
{
string newext =img.Substring(ij).ToLower();//将文件扩展名转换为小写
if(newext!=".htm" && newext!=".html" && newext!=".doc" && newext!=".xls" && newext!=".ppt" && newext!=".txt"
&& newext!=".bmp" && newext!=".jpg" && newext!=".jpeg" && newext!=".gif")
{
Response.Write("对不起,文件类型不符,不能上传。 上传文件扩展必须为(.htm/.html/.doc/.xls/.ppt/.txt/.bmp/.jpg/jpeg/gif) ");
return;
}
}
else
{
Response.Write("对不起,上传文件失败?找不到文件?");
return;
}
if(fileup.PostedFile.ContentLength>5242880) //获取上载文件的字节大小
{
Response.Write("对不起,文件太大,不能上传。上传文件不能大于5M ");
return;
}
if(File.Exists(filepath)) //确定指定的文件是否存在
{
Response.Write(" 对不起,您要上传的文件名与系统数据库中的文件重名,不能上传? ");
return;
}
if(fileup.PostedFile!=null)//判断控件是否已选定了文件的名称和扩展名
{
try
{
fileup.PostedFile.SaveAs(filepath);//将文件上传到服务器
//FileInfo fil;//提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。
//fil=new FileInfo(filepath);//获取文件名称
//fil.Delete();//永久删除文件
}
catch
{
Response.Write("对不起,上传文件失败?请选择要上传的文件?" );
return;
}
}
跟大家分享一下