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);
    	}

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

  • 相关阅读:
    linux 短信收发
    sama5d3 环境检测 adc测试
    【Codeforces 723C】Polycarp at the Radio 贪心
    【Codeforces 723B】Text Document Analysis 模拟
    【USACO 2.2】Preface Numbering (找规律)
    【Codeforces 722C】Destroying Array (数据结构、set)
    【USACO 2.1】Hamming Codes
    【USACO 2.1】Healthy Holsteins
    【USACO 2.1】Sorting A Three-Valued Sequence
    【USACO 2.1】Ordered Fractions
  • 原文地址:https://www.cnblogs.com/hun_dan/p/1968288.html
Copyright © 2011-2022 走看看