做项目时遇到的几个关于C#和SQL的细节问题(二)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 做项目时遇到的几个关于C#和SQL的细节问题(二)

做项目时遇到的几个关于C#和SQL的细节问题(二)

 2010/11/16 11:45:56  lingyibin  http://lingyibin.javaeye.com  我要评论(0)
  • 摘要:6、js中的中文显示到页面上时,一般都会乱码,解决办法:<scripttype="text/javascript"src="myjs.js"charset="gb2312"></script>就是在引用的时候加上charset。gb2312如果不行,可以换用其它的试试,如:utf-8等7、储存上传的文件时,为了减少各种可能的冲突,最好是用当前时间(精确到分或秒)加上用户的id生成一个新的文件名,再在数据库中存储原文件名和新文件名。8、图片上传。有时候用户上传的图片会很大
  • 标签:C# SQL 细节问题

6、js中的中文显示到页面上时,一般都会乱码,解决办法:

<script type="text/javascript" src="myjs.js" charset="gb2312"></script>

就是在引用 的时候加上charset。gb2312如果不行,可以换用其它的试试,如:utf-8等

7、储存上传的文件时,为了减少各种可能的冲突,最好是用当前时间(精确到分或秒)加上用户的id生成一个新的文件名,再在数据库中存储原文件名和新文件名。

8、图片上传。

有时候用户上传的图片会很大,假设我们已经设了能上传的图片最大是2M,那么用户可能大部分都传1M多的图片,这样的话,如果加载的图片多了,页面打开就会很慢。一个解决办法是把上传的图片压缩成位图。我自己封装了一个函数,以后做项目可以用得上:

?

    /// <summary>
    /// 压缩保存文件
    /// </summary>
    /// <param name="fileUpload">System.Web.UI.WebControls.FileUpload组件</param>
    /// <param name="filter">用于过滤字符串,如string[] allowExtensions = { "bmp", "jpg", "jpeg", "png", "gif", "tiff" };</param>
    /// <param name="fileSize">文件不能超过这个大小,单位byte</param>
    /// <param name="webpath">图片储存的文件夹路径!别以'/'结尾!</param>
    /// <param name="userId">用户名,用于重命文件名</param>
    /// <returns>新的文件名</returns>
    public string SaveSmallUploadFile(System.Web.UI.WebControls.FileUpload fileUpload, string[] filter,int fileSize, string webpath, int userId,int width,int height)
    {
        string filename = fileUpload.FileName;
        string newext;

        //文件大小
        int length = fileUpload.PostedFile.ContentLength;
        if (CheckFileFilter(filename, filter, out newext))
            throw new Exception("上传的文件格式不正确!");
        else if(length >= fileSize)
        {
            throw new Exception("上传的文件太大,文件大小必须小于"+fileSize/1000);
        }

        string path = System.Web.HttpContext.Current.Server.MapPath(webpath);

        if (!System.IO.Directory.Exists(path))
        {
            System.IO.Directory.CreateDirectory(path);
        }

            filename = GetNameWithDate() + "_" + userId + "." + newext;
            string str = System.Web.HttpContext.Current.Server.MapPath(webpath +"\\"+ filename + "_bak." + newext);
            fileUpload.SaveAs(str);

            //创建一个bitmap类型的bmp变量来读取文件。
            System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(str);

            //新建第二个bitmap类型的bmp2变量,我这里是根据我的程序需要设置的。
            System.Drawing.Bitmap bmpNew = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);

            //将第一个bmp拷贝到bmp2中
            System.Drawing.Graphics draw = System.Drawing.Graphics.FromImage(bmpNew);
            //设置背景透明,当然也可以设成其它颜色
            draw.Clear(System.Drawing.Color.Transparent);
            draw.DrawImage(bmp, 0, 0, width, height);
            filename = filename.Substring(0,filename.LastIndexOf(".")) + ".jpg";//可以在这里改新文件的格式,这里改了,下面的下面这句也要改
            string filePath = webpath + "/" + filename; 
            bmpNew.Save(System.Web.HttpContext.Current.Server.MapPath(filePath), System.Drawing.Imaging.ImageFormat.Jpeg);

            draw.Dispose();
            bmp.Dispose();//释放bmp文件资源

            FileInfo file = new FileInfo(str);
            if (file.Exists) file.Delete();

        return filename;
    }
    /// <summary>
    /// 将当前时间形成字符串以用作文件名
    /// </summary>
    /// <returns></returns>
    public static string GetNameWithDate()
    {
        return DateTime.Now.ToString("yyMMddhhmmssfff");
    }
/// <summary>
??? /// 检查文件后缀是否与filter中匹配
??? /// </summary>
??? /// <param name="filename">文件名称</param>
??? /// <param name="filter">匹配类型</param>
??? /// <returns></returns>
??? private static bool CheckFileFilter(string filename, string[] filter, out string ext)
??? {
??????? bool isFilter = true;
??????? int i = filename.LastIndexOf(".");
??????? ext = filename.Substring(i + 1).ToLower();
??????? if (filter != null)
??????? {
??????????? for (i = 0; i < filter.Length; i++)
??????????? {
??????????????? if (ext == filter[i].ToLower())
??????????????? {
??????????????????? isFilter = false;
??????????????????? break;
??????????????? }
??????????? }
??????? }
??????? return isFilter;
??? }
发表评论
用户名: 匿名