下面是上传测试代码:
// 不限制大小
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo;
uploadInfo.IsReady = true;
string myDicPath = string.Empty;
string path = string.Empty;
Boolean hasFile = fileUpload.HasFile;
Session["hasFile"] = hasFile;
if (this.fileUpload.PostedFile != null && this.fileUpload.PostedFile.ContentLength > 0)
{
string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName);
string filepath=fileUpload.PostedFile.FileName.ToString();
string Type = filepath.Substring(filepath.LastIndexOf(".") + 1);
if (Type == "doc" || Type == "pdf" || Type == "txt" || Type == "chm" || Type == "ppt" || Type == "sql" || Type == "xls" || Type == "et" || Type == "jnt" || Type == "dps")
{
path = this.Server.MapPath(@"UpLoadFile\\帮助文档"); //文件在服务器上的路径
GetFileType(Type);
}else if(Type=="exe"){
path = this.Server.MapPath(@"UpLoadFile\\安装程序文件");
GetFileType(Type);
}
else if (Type == "rar" || Type == "zip")
{
path = this.Server.MapPath(@"UpLoadFile\\升级包文件");
GetFileType(Type);
}
else if (Type == "dll")
{
path = this.Server.MapPath(@"UpLoadFile\\程序更新文件");
GetFileType(Type);
}
else {
path = this.Server.MapPath(@"UpLoadFile\\其他文件");
GetFileType(Type);
}
//Session 存上传文件名
//Session["fileName"] = fileName.ToString();
Session["Path"] = path.ToString();
uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength;
Session["fileLength"] = uploadInfo.ContentLength;
uploadInfo.FileName = fileName;
uploadInfo.UploadedLength = 0;
//uploadInfo.IsReady = true; //告诉服务器,已经准备好了,
int bufferSize = 1;
byte[] buffer = new byte[bufferSize];
using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create))
{
while (uploadInfo.UploadedLength < uploadInfo.ContentLength)
{
int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize);
fs.Write(buffer, 0, bytes);
uploadInfo.UploadedLength += bytes;
}
}
//上传成功标识
const string js = "window.parent.onComplete('success', '系统已成功上传附件: {0}');";
ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, fileName), true);
}
else
{
const string js = "window.parent.onComplete('error', '上传文件出错');";
ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true);
}
uploadInfo.IsReady = false;
}
}
//获取文件类型
public void GetFileType(string type)
{
string myDicPath = string.Empty;
string filePath = fileUpload.PostedFile.FileName.ToString();
Session["fileName"] = filePath.ToString();
string fileName = filePath.Substring(filePath.LastIndexOf("\\")+1);
string fileDirectory = Session["fileDirectory"].ToString();//数据库文件总目录
if (type == "doc" || type == "pdf" || type == "txt" || type == "ppt" || type == "chm" || type == "sql" || type == "xls" || type == "et" || type == "jnt" || type == "dps")
{
myDicPath = fileDirectory+"\\帮助文档";
if (!Directory.Exists(myDicPath))
Directory.CreateDirectory(myDicPath);
fileUpload.PostedFile.SaveAs(myDicPath +"\\"+ fileName); //文件保存在磁盘上
}
else if (type == "exe")
{
myDicPath = fileDirectory + "\\安装程序文件";
if (!Directory.Exists(myDicPath))
Directory.CreateDirectory(myDicPath);
fileUpload.PostedFile.SaveAs(myDicPath + "\\" + fileName);
}
else if( type=="rar" || type == "zip")
{
myDicPath = fileDirectory + "\\升级包文件";
if (!Directory.Exists(myDicPath))
Directory.CreateDirectory(myDicPath);
fileUpload.PostedFile.SaveAs(myDicPath + "\\" + fileName);
}
else if (type == "dll")
{
myDicPath = fileDirectory + "\\程序更新文件";
if (!Directory.Exists(myDicPath))
Directory.CreateDirectory(myDicPath);
fileUpload.PostedFile.SaveAs(myDicPath + "\\" + fileName);
}
else {
myDicPath = fileDirectory + "\\其他文件";
if (!Directory.Exists(myDicPath))
Directory.CreateDirectory(myDicPath);
fileUpload.PostedFile.SaveAs(myDicPath + "\\" + fileName);
}
}
</script>
12 个解决方案
#1
会不会使权限的问题?
#2
不会,在映射文件里面我已经设置好了,可以读,可以写的权限。
#3
提示什么错误?
#5
谢谢你,改了之后,问题还是一样。
#6
先参考一个简单的例子,放在服务器,能否把文件上传,如果成功之后,再做文件类型判断:
http://www.cnblogs.com/insus/p/3208744.html
我们上传时,往往需要做很多判断,由于在本机测试时,本机即是服务器,服务器也是本机,因此一切都没有什么异常出现。
如果把程序上传至服务器时,上传文件有先后顺序,建议确保文件真正上传至服务器之后,再作文件类型,大小等判断。
因此,当用户选择文件时,点上传,第一个步骤是先存储一个临时目录,然后再对它进行判断。
一切都判断通过,再从临时目录移至或拷贝至真正目录。
更多fileupload:
http://www.cnblogs.com/insus/tag/FileUpload/
http://www.cnblogs.com/insus/p/3208744.html
我们上传时,往往需要做很多判断,由于在本机测试时,本机即是服务器,服务器也是本机,因此一切都没有什么异常出现。
如果把程序上传至服务器时,上传文件有先后顺序,建议确保文件真正上传至服务器之后,再作文件类型,大小等判断。
因此,当用户选择文件时,点上传,第一个步骤是先存储一个临时目录,然后再对它进行判断。
一切都判断通过,再从临时目录移至或拷贝至真正目录。
更多fileupload:
http://www.cnblogs.com/insus/tag/FileUpload/
#7
引用了你修改之后的代码,每次传过来的后缀得到的都是“其他文件夹”而得不到相对应的目录哦。可以给我一个完整的方案吗?
#9
看看效果:
#10
#11
嗯,是的,有点小小问题,不过,Insus.NET已经更改正确了,参考:
http://www.cnblogs.com/insus/p/3243143.html
您好,谢谢你这么热心的帮我决解问题,刚刚引用了你给的例子,测试了一下,还是存在问题,问题是:除了其他文件可以找到相对应的文件夹以外,不管上传什么样的的后缀(里面规定的后缀名),都归类在帮助文档里面,例如,上传后缀名为DLL,也归类到帮助文档里面。希望能得到你热心的解答,谢谢您,大哥,您辛苦了。
#12
提示什么错误?
提示:HTTP 500内部服务器错误,这个是什么原因造成的呢。。
#1
会不会使权限的问题?
#2
会不会使权限的问题?
不会,在映射文件里面我已经设置好了,可以读,可以写的权限。
#3
提示什么错误?
#4
#5
Insus.NET对你最后一个方法,改写成这个样子:
建议先理清代码,然后才可以方便找出问题所在:
http://www.cnblogs.com/insus/p/3243143.html
谢谢你,改了之后,问题还是一样。
#6
先参考一个简单的例子,放在服务器,能否把文件上传,如果成功之后,再做文件类型判断:
http://www.cnblogs.com/insus/p/3208744.html
我们上传时,往往需要做很多判断,由于在本机测试时,本机即是服务器,服务器也是本机,因此一切都没有什么异常出现。
如果把程序上传至服务器时,上传文件有先后顺序,建议确保文件真正上传至服务器之后,再作文件类型,大小等判断。
因此,当用户选择文件时,点上传,第一个步骤是先存储一个临时目录,然后再对它进行判断。
一切都判断通过,再从临时目录移至或拷贝至真正目录。
更多fileupload:
http://www.cnblogs.com/insus/tag/FileUpload/
http://www.cnblogs.com/insus/p/3208744.html
我们上传时,往往需要做很多判断,由于在本机测试时,本机即是服务器,服务器也是本机,因此一切都没有什么异常出现。
如果把程序上传至服务器时,上传文件有先后顺序,建议确保文件真正上传至服务器之后,再作文件类型,大小等判断。
因此,当用户选择文件时,点上传,第一个步骤是先存储一个临时目录,然后再对它进行判断。
一切都判断通过,再从临时目录移至或拷贝至真正目录。
更多fileupload:
http://www.cnblogs.com/insus/tag/FileUpload/
#7
Insus.NET对你最后一个方法,改写成这个样子:
建议先理清代码,然后才可以方便找出问题所在:
http://www.cnblogs.com/insus/p/3243143.html
谢谢你,改了之后,问题还是一样。
引用了你修改之后的代码,每次传过来的后缀得到的都是“其他文件夹”而得不到相对应的目录哦。可以给我一个完整的方案吗?
#8
嗯,是的,有点小小问题,不过,Insus.NET已经更改正确了,参考:
http://www.cnblogs.com/insus/p/3243143.html
http://www.cnblogs.com/insus/p/3243143.html
#9
看看效果:
#10
#11
嗯,是的,有点小小问题,不过,Insus.NET已经更改正确了,参考:
http://www.cnblogs.com/insus/p/3243143.html
您好,谢谢你这么热心的帮我决解问题,刚刚引用了你给的例子,测试了一下,还是存在问题,问题是:除了其他文件可以找到相对应的文件夹以外,不管上传什么样的的后缀(里面规定的后缀名),都归类在帮助文档里面,例如,上传后缀名为DLL,也归类到帮助文档里面。希望能得到你热心的解答,谢谢您,大哥,您辛苦了。
#12
提示什么错误?
提示:HTTP 500内部服务器错误,这个是什么原因造成的呢。。