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

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

  • 相关阅读:
    SQLite简介
    dockerfiles宝藏系列
    Docker容器运行GUI程序的配置方法
    Windows神器cmder
    Typora设置标题自动添加序号
    手机往电脑备份相册
    搜索引擎的高级使用技巧
    Django Model 模型
    前后端分离是什么操作
    搭建FTP(win10版)以及基本FTP操作
  • 原文地址:https://www.cnblogs.com/hun_dan/p/1968288.html
Copyright © 2011-2022 走看看