文件上传无法取到文件名的全路径的问题.

miomio 2009-03-21 01:43:46
文件上传无法取到文件名的全路径的问题.
aspx文件:
<form id="form1" runat="server" method=post>
<div>
<input id="File1" type="file" runat="server" />
<input id="Button2" type="submit" value="显示文件名" onclick="return Button2_onclick()" />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
</form>
Cs文件:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
this.Label1.Text = this.File1.PostedFile.FileName;
}
}
}

我选择了c:\1.txt 这个文件,点击按钮后取到的FileName为:1.txt
而不是我想要的结果是:c:\1.txt这是怎么回事.
理论上PostedFile.FileName 返回结果: 客户端的文件的名称,包含目录路径。
但是我就是取不到包含目录的文件名称,
我就很奇怪,因为原先的程序都是可认取到完全路径的,但是这两天就取不到,不知道那里出了问题
做了这个测试也不行,请高手出招.

...全文
1111 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
place77777 2011-01-02
  • 打赏
  • 举报
回复
我也遇到过这样的问题,原来是浏览器的安全级别限制了它,你只要把浏览器的安全级别改成“中”就可以得到全路径了
wei56 2010-07-23
  • 打赏
  • 举报
回复
在本机的时候可以 上传图片 并显示 但是 在服务器 上部署的时候 就不能了
兄弟 有谁知道不?给点提示。
wei56 2010-07-23
  • 打赏
  • 举报
回复
那 发布之后 呢 还是没有获取上传图片的路径 怎么弄啊 急(⊙﹏⊙b汗)...
报错:
System.IO.Directory.CreateDirectory(获取上传图片的路径);不可访问
zyc2009x 2009-04-27
  • 打赏
  • 举报
回复
18楼的方法有效
在IE中设置允许获得客户端文件路径。ie默认给禁止了,只要设置一下就OK了。技术交流qq:755624068;注明 程序员

我估计是类似BT,电驴 的一些下载工具自动的帮你打开这个选项,所以File1.PostedFile.FileName 可以获得到全路径

再次感谢18楼的兄弟
zhoulehua 2009-04-20
  • 打赏
  • 举报
回复
ding
ak8800 2009-04-20
  • 打赏
  • 举报
回复
IE8和火狐都取不到上传文件的全路径,不过可以在服务器端通过http.Current.Request.Files[0]获取到上传的文件!
Roc_Lee 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 miomio 的回复:]
问题不在于此,我关心的主要问题在于什么原因导致了PostedFile.FileName 取不到文件的全路径.
[/Quote]
是不是字符串长度超长的原因。
freewind0521 2009-04-20
  • 打赏
  • 举报
回复
本机上应该可以得到全路经的,你是在服务器上得不到全路径吧
zzxap 2009-04-20
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace 获取文件路径
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private string filepath;

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.FileName = "*.txt";
openFileDialog1.Filter = "接线图(*.txt)|*.txt";
openFileDialog1.RestoreDirectory = true;
openFileDialog1.FilterIndex = 1;
//openFileDialog1.ShowDialog();
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
FileInfo info = new FileInfo(openFileDialog1.FileName);
filepath = info.ToString ();
}
}

private void button1_Click(object sender, EventArgs e)
{
StreamReader sr;
string s;
try
{
sr = File.OpenText(filepath);
s = sr.ReadToEnd();
richTextBox1.Text = s.ToString();
sr.Close();
}
catch(Exception ex)
{
MessageBox.Show("文件不存在");
}
}

private void panel1_Paint(object sender, PaintEventArgs e)
{
if(filepath !="")
{
MessageBox .Show ("buweikong");
}
}

}
}

zzxap 2009-04-20
  • 打赏
  • 举报
回复
[code=C#]
通过查找资料,发现C#获取文件路径的方法有以下几种:

//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str5=Application.StartupPath;
//可获得当前执行的exe的文件名。
string str1 =Process.GetCurrentProcess().MainModule.FileName;
// 获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。 备注 按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:\”)。如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如“C:\mySubDirectory”)。
string str2=Environment.CurrentDirectory;
//获取应用程序的当前工作目录。
string str3=Directory.GetCurrentDirectory();
//获取基目录,它由程序集冲突解决程序用来探测程序集。
string str4=AppDomain.CurrentDomain.BaseDirectory;
//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str5=Application.StartupPath;
//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str6=Application.ExecutablePath;
//获取或设置包含该应用程序的目录的名称。
string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase
[/CODE]
SlaughtChen 2009-04-20
  • 打赏
  • 举报
回复
学习了.谢谢
taobao755624068 2009-04-20
  • 打赏
  • 举报
回复
在IE中设置允许获得客户端文件路径。ie默认给禁止了,只要设置一下就OK了。技术交流qq:755624068;注明 程序员
benjaminwu198818 2009-03-21
  • 打赏
  • 举报
回复

//this.Label1.Text = this.File1.PostedFile.FileName 不是FileName 是FileNames 吧 …
专属 2009-03-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhoufoxcn 的回复:]
FileUpload控件
FileUpload控件是一个很重要的控件,它被Web服务器最终解释为形如“ <input type=”file”…/>”这样的普通HTML控件。
它有如下常见属性:



属性名 数据类型 说明
FileBytes byte[] 上传的文件内容的字节数组表示形式
FileContent Stream 上传文件的数据流
FileName string 上传文件在客户端的名字
HasFile bool 指示是否上传了文件
PostedFile HttpPostedFile 获取文件基础的HttpPostedFi…
[/Quote]
这个好像可以啊!
miomio 2009-03-21
  • 打赏
  • 举报
回复
sakeyi 你能不能帮我测试一下,asp.net下的结果
Sakeyi 2009-03-21
  • 打赏
  • 举报
回复
WinForm是取的全路径,asp.net是只能取到文件名的,除非你用脚本
miomio 2009-03-21
  • 打赏
  • 举报
回复
maddemon 我需要取到的是在客户端上的全路径PostedFile.FileName 就是取客户端上的全路径,但是就是取不到,
只取得一个文件名(不带路径)
周公 2009-03-21
  • 打赏
  • 举报
回复
你调试一下看看,是不是得到了,但是某些原因在页面不能显示。
深海之蓝 2009-03-21
  • 打赏
  • 举报
回复
貌似 本机上应该 就是得到全名
而在不同的机器上,由于安全原因,不能获取客户端的文件全名,保护客户端的安全
miomio 2009-03-21
  • 打赏
  • 举报
回复
但以前程序都是这样取的,可以取到.FileName
而且帮助也说了,返回的是全路径,麻烦各位给我看看是什么问题
加载更多回复(9)

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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