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

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

  • 相关阅读:
    http缓存机制与原理
    BFC与浮动
    05ICMP协议与ARP协议(IP协议中重要协议)
    04IP编址(网络层)
    03以太网帧结构(链路层 IEEE802.3)
    02传输介质简介
    shell 脚本 2
    shell 脚本 1
    shell 中时间 表达
    sed 行编辑器
  • 原文地址:https://www.cnblogs.com/hun_dan/p/1968288.html
Copyright © 2011-2022 走看看