DotText发布照片的问题解决了
这个Blog上次我测试的时候发现照片上传的功能不能用,现在改好了。
开始的时候出现这样的错误提示:
异常详细信息: System.IO.DirectoryNotFoundException: 未找到路径“D:\”的一部分。
开始我以为是因为空间不支持System.IO,(我申请的空间支持ISO,文件读写都正常),所以我打算去网上找一个ASP.NET的文件上传组件,可是找来找去没有找到合适的,最后发现一段代码Asp.net 文件上传的实例,抄录如下
1
<%@ page Language = "C#" debug = "true" %>
2
<%@ Import Namespace = "System.IO" %>
3
<script language = "C#" runat = "server">
4![](/Images/OutliningIndicators/InBlock.gif)
5
public void uploadFile(object sender , EventArgs E) {
6
//检查上传文件不为空
7
if(inputFile.PostedFile.ContentLength > 0) {
8
//设定上传文件的保存路径
9
string strSaveDir = "./upload/";
10
string strName = inputFile.PostedFile.FileName;
11
//取得文件名(抱括路径)里最后一个"."的索引
12
int intExt = strName.LastIndexOf(".");
13
//取得文件扩展名
14
string strExt = strName.Substring(intExt);
15
//这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
16
/**//*
17
DateTime datNow = DateTime.Now;
18
string strNewName = datNow.DayOfYear.ToString() + inputFile.PostedFile.ContentLength.ToString() + strExt; */
19
//取得文件名(包括路径)里最后一个"\"的索引
20
int intPath = strName.LastIndexOf("\\");
21
//取得文件名(不包括路径)
22
string strNewName = strName.Substring(intPath);
23
//保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
24
//注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里"\"必须用"\\"代替
25
inputFile.PostedFile.SaveAs(Server.MapPath(strSaveDir + strNewName));
26
//得到这个文件的相关属性:文件名,文件类型,文件大小
27
labelUpResult.Text = "上传成功!";
28
labelFileName.Text = "文件源:" + strName;
29
labelFileExt.Text = "文件类型:" + inputFile.PostedFile.ContentType + "( " + strExt + " )";
30
labelFileSize.Text = "文件大小:" + (inputFile.PostedFile.ContentLength / 1024).ToString() + " K Byte(s)";
31
} else {
32
labelUpResult.Text = "请选择你要上传的文件!";
33
labelFileName.Text = "";
34
labelFileExt.Text = "";
35
labelFileSize.Text = "";
36
}
37
}
38
</script>
39![](/Images/OutliningIndicators/None.gif)
40
<html>
41
<head>
42
<title>上传文件</title>
43
</head>
44
<body>
45
<div align="center">
46![](/Images/OutliningIndicators/None.gif)
47
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#eeeeee" id="AutoNumber1">
48
<form id="formFile" method="post" action="" enctype="multipart/form-data" runat="server">
49
<tr>
50
<td align="center">
51
<input type="file" id="inputFile" name="inputFile" runat="server" size="64">
52
</td>
53
</tr>
54
<tr>
55
<td align="center">
56
<input type="button" value="Upload" OnServerClick="uploadFile" id="Button1" name="Button1" runat="server">
57
</td>
58
</tr>
59
<tr>
60
<td align="center">
61
<asp:Label id="labelUpResult" runat="server" text="" font-bold="True" forecolor="#FF0000"/><br>
62
<asp:Label id="labelFileName" runat="server" text="" font-bold="True" forecolor="#FF0000"/><br>
63
<asp:Label id="labelFileExt" runat="server" text="" font-bold="True" forecolor="#FF0000"/><br>
64
<asp:Label id="labelFileSize" runat="server" text="" font-bold="True" forecolor="#FF0000"/><br>
65
</td>
66
</tr>
67
</form>
68
</table>
69![](/Images/OutliningIndicators/None.gif)
70
</div>
71
</body>
72
</html>
73![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)
71
![](/Images/OutliningIndicators/None.gif)
72
![](/Images/OutliningIndicators/None.gif)
73
![](/Images/OutliningIndicators/None.gif)
可是我在应用代码的时候才发现,其实根本不是这个问题,而是DotText根据每一个照片分类创建目录的时候出现的错误,在网上有一篇相关的解释 关于未找到路径“D:\”的一部分,同样,内容摘抄如下:
1
在实际的应用中,我们发现很多的Asp.NET空间提供商并没有相关的经验,而依然停留在Asp的管理模式中。
2
其中最常见,就是目录权限的配置上:他们大多数沿习了Asp的经验,给用户所在目录赋于所有权限,然后将磁盘根目录的相关权限全部去掉。
3
这样以来就导致一个问题,就是Asp.NET中的 Server.MapPath 无法使用,这个方法却是创建目录或文件所必须的,如下面创建目录的代码:
4
Directory.CreateDirectory(Server.MapPath("Test"));
5
这是一个非常简单的操作:在用户的当前目录下创建一个名为 "Test" 的子目录。
6
然后就是这样一个操作在没有正确配置的空间就会无法运行,它会提示为什么会有这样的错误呢?
7
原因就是 Server.MapPath() 这个方法,这个方法是让一个相对路径转为绝对路径,而在转换的过程序中,.NET框架需要得到当前硬盘的一些属性,如盘符等,而这个时候,空间提供商却将.Net用户对磁盘根目录的权限全部拒绝,从而导致程序无法正常运行。
8![](/Images/OutliningIndicators/None.gif)
9
有个时候,空间提供商会说:"你为什么要用绝对路径,而不使用相对路径呢?"
10
这是行不通的,如果你这样程序:Directory.CreateDirectory("Test");
11
系统在运行的时候,并不是象你想像的那样,会自动在用户的当前目录下创建目录,而会尝试在 "C:\WINNT\System32" 路径下创建目录 (其中的C:\WINNT表示你的操作系统安装的路径)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
而这个问题我在网上没有找到替代的解决方案,所以我打算索性不创建目录算了,,所以我在web.config中添加了控制是否分级创建目录的选项
<AllowCreateFolder>false</AllowCreateFolder>
然后在获取文件保存路径的方法上做如下手脚:
1
public static string LocalGalleryFilePath(HttpContext context, int categoryid)
2
{
3
if(Config.Settings.AllowCreateFolder)
4
return string.Format("{0}\\{1}\\",Config.CurrentBlog(context).ImageDirectory,categoryid);
5
else
6
return string.Format("{0}\\",Config.CurrentBlog(context).ImageDirectory);
7
}
8![](/Images/OutliningIndicators/None.gif)
9
public static string HttpGalleryFilePath(HttpContext context, int categoryid)
10
{
11
if(Config.Settings.AllowCreateFolder)
12
return string.Format("{0}{1}/",Config.CurrentBlog(context).ImagePath,categoryid);
13
else
14
return string.Format("{0}",Config.CurrentBlog(context).ImagePath);
15
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这样就可以让DotText将文件不按照目录分级保存,就可以成功的发布照片了
posted on 2005-09-17 20:15 K_Reverter 阅读(272) 评论(0) 编辑 收藏 举报