zoukankan      html  css  js  c++  java
  • BlogYi 上传文件和图片的bug

    源代码:

    位于:PrecompiledWeb\BlogEngine.NET\admin\Pages\Add_entry.aspx.cs中

    145行:这个是上传保存的地址。

    private void Upload(string virtualFolder, FileUpload control, string fileName)
    	{
    		string folder = Server.MapPath(virtualFolder);
    		if (!Directory.Exists(folder))
    			Directory.CreateDirectory(folder);
    
    		control.PostedFile.SaveAs(folder + fileName);
    	}

    119行:这个是上传文档并且在 中加人 文档地址和图片地址的地方

    	 	private void btnUploadImage_Click(object sender, EventArgs e)
    	{
    		string relativeFolder = DateTime.Now.Year.ToString() + Path.DirectorySeparatorChar + DateTime.Now.Month.ToString() + Path.DirectorySeparatorChar;
    		string folder = BlogSettings.Instance.StorageLocation + "files" + Path.DirectorySeparatorChar;
    		string fileName = txtUploadImage.FileName;
    		Upload(folder + relativeFolder, txtUploadImage, fileName);
    
    		string path = Utils.RelativeWebRoot.ToString();
    		string img = string.Format("<img src=\"{0}image.axd?picture={1}\" alt=\"\" />", path, Server.UrlEncode(relativeFolder.Replace("\\", "/") + fileName));
    		txtContent.Text += img;
    		txtRawContent.Text += img;
    	}
    
    	private void btnUploadFile_Click(object sender, EventArgs e)
    	{
    		string relativeFolder = DateTime.Now.Year.ToString() + Path.DirectorySeparatorChar + DateTime.Now.Month.ToString() + Path.DirectorySeparatorChar;
    		string folder = BlogSettings.Instance.StorageLocation + "files" + Path.DirectorySeparatorChar;
    		string fileName = txtUploadFile.FileName;
    		Upload(folder + relativeFolder, txtUploadFile, fileName);
    
    		string a = "<p><a href=\"{0}file.axd?file={1}\">{2}</a></p>";
    		string text = txtUploadFile.FileName + " (" + SizeFormat(txtUploadFile.FileBytes.Length, "N") + ")";
    		txtContent.Text += string.Format(a, Utils.RelativeWebRoot, Server.UrlEncode(relativeFolder.Replace("\\", "/") + fileName), text);
    		txtRawContent.Text += string.Format(a, Utils.RelativeWebRoot, Server.UrlEncode(relativeFolder.Replace("\\", "/") + fileName), text);
    	}	

    源代码的问题上传同名文件的时候使用的是原来文件的地址,,,很郁闷的。。。

    修改:防止同名文件,,其实这里我也可以做个判断。。但是那样 如果有一直存在哪不是很费服务器,,随便了那样也可以的。。。

    private string Upload(string virtualFolder, FileUpload control, string fileName)
        {
            string folder = Server.MapPath(virtualFolder);
            if (!Directory.Exists(folder))
            Directory.CreateDirectory(folder);
            string dangqiannanme = DateTime.Now.ToString("yyyy-MM-dd-ss") + fileName;
            string savapath = folder + dangqiannanme;
             control.PostedFile.SaveAs(savapath);
             return dangqiannanme;
        } 
    
    private void btnUploadImage_Click(object sender, EventArgs e)
    	{
    		string relativeFolder = DateTime.Now.Year.ToString() + Path.DirectorySeparatorChar + DateTime.Now.Month.ToString() + Path.DirectorySeparatorChar;
    		string folder = BlogSettings.Instance.StorageLocation + "files" + Path.DirectorySeparatorChar;
    		string fileName = txtUploadImage.FileName;
    		string  savaphname=Upload(folder + relativeFolder, txtUploadImage, fileName);
    
    		string path = Utils.RelativeWebRoot.ToString();
            string img = string.Format("<img src=\"{0}image.axd?picture={1}\" alt=\"\" />", path, Server.UrlEncode(relativeFolder.Replace("\\", "/") + savaphname));
    		txtContent.Text += img;
    		txtRawContent.Text += img;
    	}
    
    	private void btnUploadFile_Click(object sender, EventArgs e)
    	{
    		string relativeFolder = DateTime.Now.Year.ToString() + Path.DirectorySeparatorChar + DateTime.Now.Month.ToString() + Path.DirectorySeparatorChar;
    		string folder = BlogSettings.Instance.StorageLocation + "files" + Path.DirectorySeparatorChar;
    		string fileName = txtUploadFile.FileName;
    		string  savaphname=Upload(folder + relativeFolder, txtUploadFile, fileName);
    
    		string a = "<p><a href=\"{0}file.axd?file={1}\">{2}</a></p>";
    		string text = txtUploadFile.FileName + " (" + SizeFormat(txtUploadFile.FileBytes.Length, "N") + ")";
            txtContent.Text += string.Format(a, Utils.RelativeWebRoot, Server.UrlEncode(relativeFolder.Replace("\\", "/") + savaphname), text);
            txtRawContent.Text += string.Format(a, Utils.RelativeWebRoot, Server.UrlEncode(relativeFolder.Replace("\\", "/") + savaphname), text);
    	}

    这样基本上就可以防止同名文件上传的文件了。。。

  • 相关阅读:
    11.2hadoop监控:日志配置、堆栈跟踪、度量和JMX
    11.1.3hadoop工具dfsadmin、fsck、数据库扫描器、均衡器
    11.1.2hadoop 安全模式
    11.1.1namenode和datanode的数据结构和格式以及镜像fsimage和编辑日志edit
    10.5 hadoop集群基准评测程序测试
    10.4 hadoop安全性kerberos安全验证和委托令牌
    零基础学习python_生成器(49课)
    安全测试5_服务端的安全漏洞(SQL注入、命令注入、文件操作类)
    安全测试4_客户端的安全漏洞(XSS、CSRF、点击劫持、URL跳转)
    零基础学习python_魔法方法(41-48课)(迭代器)
  • 原文地址:https://www.cnblogs.com/hun_dan/p/1968288.html
Copyright © 2011-2022 走看看