目前做的是ASP.NET的项目.
我的服务器放在C盘中的WWWROTE中,但是我所有的上传文件都是放在该服务器地址的D盘中的某个文件夹中.
我想怎么才能把文件上传到服务器中的D盘文件夹中呢,(直接postedFile.SaveAs(@"D:/Fujian"+fileName))????这样的话我在本机测试是可以的,因为这是自己的一个练习项目.自我感觉对这个路径有点置疑.但是我又不知道怎么去取服务器中的D盘的文件夹.请高手帮帮忙.
补充说明:
我的数据库设计的只是文件名,和它的路径.新增一个附件,我要求是自动保存到服务器中的D盘中.,不需要用到二进制流来写入到数据库中,只需要保存它相对与服务器的路径就可以了(这里的路径也有点不明白,还是D:/Fujian"+fileName?????)另外我从GridVIEW中双击某行时候,如何模拟弹出一个下载对话框.我直接给他Window.open("路径");
请高手给点思路,或者原代码,非常感谢!
我的服务器放在C盘中的WWWROTE中,但是我所有的上传文件都是放在该服务器地址的D盘中的某个文件夹中.
我想怎么才能把文件上传到服务器中的D盘文件夹中呢,(直接postedFile.SaveAs(@"D:/Fujian"+fileName))????这样的话我在本机测试是可以的,因为这是自己的一个练习项目.自我感觉对这个路径有点置疑.但是我又不知道怎么去取服务器中的D盘的文件夹.请高手帮帮忙.
补充说明:
我的数据库设计的只是文件名,和它的路径.新增一个附件,我要求是自动保存到服务器中的D盘中.,不需要用到二进制流来写入到数据库中,只需要保存它相对与服务器的路径就可以了(这里的路径也有点不明白,还是D:/Fujian"+fileName?????)另外我从GridVIEW中双击某行时候,如何模拟弹出一个下载对话框.我直接给他Window.open("路径");
请高手给点思路,或者原代码,非常感谢!
{
connection conn = new connection();
SqlConnection con = conn.con1();
if (FileUpload1.HasFile)//如果添加文件存在
{
string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower();//文件扩展名
string[] arr ={ ".gif", ".bmp", ".jpg", ".jpeg", ".tiff" };
for (int i = 0; i < arr.Length; i++)
{
if (fileExtension == arr[i])
{
string path = Server.MapPath("image/");//服务器路径
FileUpload1.SaveAs(path + FileUpload1.FileName);//将图片存放于服务器指定位置
return true;//以上能完成说明图片上传成功
}
}
return false;
}
else
return false;//没有上传图片
}
这是直接将图片放到网站内的文件夹内,数据库保存相对路径
SqlConnection con = conn.con1();
是链接数据库网站存放图片的文件夹叫“image”
你这个好象是保存在项目中的Image文件夹中的.我的意思是怎么保存到项目的服务器中的D盘的某个文件夹
就是不理解这个意思,在帮我想想
====
下载什么?这个“路径“是指什么路径?
如果非要保存在一个固定的位置,你可以先指定这个位置,如果这个位置不存在的话,给他创建,如:
保存之前:
string filepath="D:\\Fujian";
if (!System.IO.Directory.Exists(filepath))
{
System.IO.Directory.CreateDirectory(filepath);
}
创建万这个路径之后:
FileUpload.PostedFile.SaveAs(filepath+ "\\" + filename);
比如我有个项目为名为Test放在D盘的Text文件夹中.但是我上传的时候是要把它上传到该服务器中的D盘的另外一个文件夹中如FUJIAN中.
当然如果我把这个FUJIAN文件夹放在d:\Text项目文件夹下这样就没问题.直接this.Server.MapPath("")就可以了.
问题是需求上所有的上传的附件不是放在项目文件中.
UP
{
HttpPostedFile f = null;
for ( int i = 0;i < this.Request.Files.Count;i++)
{
f = this.Request.Files[i];
f.SaveAs(你的服务器存储路径 + f.FileName);
}
}
catch (Exception err)
{
this.Label1.Visible = true;
this.Label1.Text += err.Message;
}
if (!System.IO.Directory.Exists(filepath))
{
System.IO.Directory.CreateDirectory(filepath);
}
创建万这个路径之后:
FileUpload.PostedFile.SaveAs(filepath+ "\\" + filename);这个我也不知道,我就是不理解,他创建的这个文件夹后是属于服务器中,还是保存在当前本机中呢.
请详细解剖下.
如果是在服务器中的话,我应该怎么去根据该路径进行下载.因为数据库中没有用二进制流来上传,只保存了这个路径而已.
建议使用LinkField 使用target="_blank"就不存在这些问题,还会流畅很多。
===================
楼主自己想一想,如果用户上传一个保存在本机中,且不说这个上传有没有必要,如果别人下载的时候都要连接这个用户的机器吗?不可能吧?
===================
正常情况下,文件的保存都是保存在服务器上,数据库里面只保存文件路径,所以说你做的思路还是正确的。至于怎么下载,无非是根据路径下载了。看你数据库保存路径是怎么保存的,如果就是绝对的物理路径,那么这个可以直接用。如果是相对路径的话,就要MapPath()一下了。
明天得找个外网试试.
继续讨论下载问题
路径绝对正确.
就是双击GRIDVIEW时候如何提示下载该文件!~!!
我写的上创图片的代码,图片保存在服务器上,而路径就写到数据库去.//
//上传相关楼层图片
//
private void btn_ul_Click(object sender, System.EventArgs e)
{
if (this.f_glance.PostedFile.ContentLength != 0)
{
if((f_glance.PostedFile.ContentLength > 0)&&(f_glance.Value.ToString() != ""))
{
if(f_glance.PostedFile.ContentLength>=4000000)
{
MsgBox("文件超出指定大小,请分割后上传!");
return;
} //得到上传文件的文件名
string filename=Path.GetFileName(f_glance.PostedFile.FileName);
//得到后缀名
string fileExt="";
int n=filename.LastIndexOf(".");
if(n<0)
{
fileExt="";
}
else
{
fileExt=filename.Substring(n);
}
//检查文件的后缀名
int extIndex=Array.IndexOf(upLoadFileExts,fileExt.ToLower());
if(extIndex==-1)
{
MsgBox("请上传图片类型文件!");
return;
} String fileName = f_glance.PostedFile.FileName.Substring(f_glance.PostedFile.FileName.LastIndexOf("\\"),
f_glance.PostedFile.FileName.Length - f_glance.PostedFile.FileName.LastIndexOf("\\")); String fileTime = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
+ DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString()
+ DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString()
+ DateTime.Now.Millisecond.ToString(); fileName = "\\" + fileTime + GetRandomint() + fileName.Substring(fileName.IndexOf("."),fileName.Length - fileName.IndexOf("."));
if(File.Exists(Server.MapPath(Request.ApplicationPath) + "\\picture" + fileName) == false)
{
try
{
string link=Server.MapPath(Request.ApplicationPath) + "\\picture" + fileName;
f_glance.PostedFile.SaveAs(link);
string picturelink=Server.MapPath(Request.ApplicationPath) + "\\picture" + fileName;
lab_img.Text="<img id='img_layer' src='"+picturelink+"' Width='500px' Height='250px' />";
lbl_link.Text=fileName;
MsgBox("图片上传成功!");
}
catch(Exception ex)
{
MsgBox("由于网络原因,上载文件错误 " + ex.Message);
}
}
else
{
MsgBox("你上载文件的文件名称已经存在,请更改你的文件名称!");
return;
}
}
else
{
MsgBox("文件的内容不能为空!");
return;
}
}
else
{
MsgBox("文件的名称不能为空!");
}
} private String GetRandomint()
{
Random random = new Random();
return(random.Next(10000).ToString());
}
我要下载的文件不在项目的那个文件夹下,
插入的时候是用的如D:\fujian\aa.txt到数据库的.但是如果不插入这个路径的话,
我不知道到底该插入什么样的路径了,
如果我把fujian这个文件夹放到项目服务器文件夹中的话,用server,mapPath可以取出来下载,现在就是D:\fujian\aa.txt不知道怎么下载.他只能右键另存为来实现下载.但是我又要实现双击GridView实现下载,所以搞不定了,请大家仔细想想.
当然
fujian文件夹放到项目服务器文件夹中的话,一点问题都没有.
就是需求要把他放在指定的D盘,这样后我就搞糊涂了!大家在仔细想想