标签:des style blog http color os io ar for
在博客园注册好几年了,但是一直也没有养成写博客的习惯,园龄2年3个月,没有博客,没有粉丝,少有关注,还基本每周都要逛几次,按说也算是个奇葩的超级大水B了吧,哈哈。
上半年换了工作,在找工作的各种面试过程中,才发现积累的重要性,很多问题在以往的经历中都或多或少经历过,但是大部分都是浅尝辄止,百度出答案,搬上项目上用,能用就用,不能用改改再用,还不行网上找别的方法用。一直这样,几年下来,问题解决不少,但是想想那些是自己会的,真的把网络断了让我封闭式编程,我还能写出多少东西呢,想想就心惊胆战。
不怕起步晚,就怕不动,最近在忙着做个网站,两周的时间完成网站前后台的基本功能,时间紧,任务重,忙完了之后,在实践的过程在遇到并解决了的其中一个小问题,把解决过程记下来,积累就从这里开始吧。
问题很简单,网站分前台展示和后台管理。后台管理前台的数据展示,图片展示等等,经过比较,将后台和前台分离,做了两个工程,问题就是后台上传的图片文件,如何在前台的工程中展示。
想到利用ASP的FileUpload是可以直接将文件上传的文件保存到任意的物理路径下的,想想何不将上传的文件保存到前台工程下的某个文件夹下,供前台直接读取呢。说干就干,
<asp:FileUpload ID="FileUpload1" runat="server" BorderWidth="1px" Width="300px" /> <asp:Button ID="btnUpload" runat="server" Text="上¦?传ä?" OnClick="btnUpload_Click" />
protected void btnUpload_Click(object sender, EventArgs e) { if (FileUpload1.FileName != null && FileUpload1.FileName.Length > 0) { string fname = DateTime.Now.ToString("yyMMddHHmmssfff") + FileUpload1.FileName; // 文?件t上¦?传ä? string fullpath = UploadFiles.Load(FileUpload1, "Images\\NewsSlider\\", fname); if (fullpath.Length > 0) { MessageBox.Show(this, fullpath, false); return; } else { fullpath = "Images/NewsSlider/" + fname; imgQM.ImageUrl = ""; imgQM.ImageUrl = "../" + fullpath; imgQM.Visible = true; } } else { MessageBox.Show(this, "未选择文件", false); return; } }
public static string Load(FileUpload fileUpload, string directory, string newFileName) { string path = HttpContext.Current.Request.PhysicalApplicationPath + newdirectory; string path2 = path.Replace("AgricultureManage", "AgriculturePlatform"); //检¨¬查¨¦目?录?是º?否¤?存ä?在¨²,ê?不?存ä?在¨²则¨°创ä¡ä建¡§目?录? CreateDirectory(path); CreateDirectory(path2); path = path + filename; path2 = path2 + filename; //判D断?文?件t是º?否¤?存ä?在¨²,如¨?果?存ä?在¨²则¨°删¦?除y if (File.Exists(path)) File.Delete(path); if (File.Exists(path2)) File.Delete(path2); //保À¡ê存ä?文?件t fileUpload.PostedFile.SaveAs(path); fileUpload.PostedFile.SaveAs(path2); }
这里的path和path2分别是后台和前台的文件夹路径,这样,上传的文件在后台工程和前台工程下分别存了一份(后台图片用来展示缩略图,可不要),同时,将前台相对路径存入DB,至此,后台的工作全部完成,接下来就是前台展示了,打开前台工程,会发现上传的路径下已经存在刚才上传的文件了
这些文件虽然没有包含在项目中,但是通过<img src=“”>是可以显示的,只要在DB中取出路径,直接赋值,一切OK,部署到IIS上后,测试OK,后台上传的图片,前台刷新即可展示。
总结,1.该方法有一定的局限性,我的前后台是部署在同一台服务器上的,所以可以相互上传文件,一旦部署在不同服务器上,非工程文件夹下文件的读取,还要另外讨论,据说要用到文件夹映射和FTP文件服务器,哪位有学习资料和参考知识,欢迎指导。2.由于涉及到文件上传和数据库登录的同步,在文件上传失败,数据库写入失败时候,对数据库的回滚和文件的删除处理必须注意,否则可能造成数据和图片不一致问题。
第一次写博客,有什么写的不对的,或者有其他好的实现方式,欢迎指正探讨。
标签:des style blog http color os io ar for
原文地址:http://www.cnblogs.com/touphery/p/3949255.html