做项目时遇到的几个关于C#和SQL的细节问题(二)
2010-10-17 22:44
519 查看
6、js中的中文显示到页面上时,一般都会乱码,解决办法:
<script type="text/javascript" src="myjs.js" charset="gb2312"></script>
就是在引用 的时候加上charset。gb2312如果不行,可以换用其它的试试,如:utf-8等
7、储存上传的文件时,为了减少各种可能的冲突,最好是用当前时间(精确到分或秒)加上用户的id生成一个新的文件名,再在数据库中存储原文件名和新文件名。
8、图片上传。
有时候用户上传的图片会很大,假设我们已经设了能上传的图片最大是2M,那么用户可能大部分都传1M多的图片,这样的话,如果加载的图片多了,页面打开就会很慢。一个解决办法是把上传的图片压缩成位图。我自己封装了一个函数,以后做项目可以用得上:
<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); string filePath = webpath +"/"+ filename.Substring(0,filename.LastIndexOf(".")) + ".jpg"; //可以在这里改新文件的格式,这里改了,下面这句也要改 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; }
相关文章推荐
- 做项目时遇到的几个关于C#和SQL的细节问题(一)
- 关于C#SqlParameter传参进行模糊查询遇到的问题!
- 写hive sql和shell脚本时遇到几个蛋疼的问题!
- 项目1.3版本遇到的关于通知的一些问题
- C#中ArrayList 与 string、string[]数组 的转换 (转学习:今天做项目时遇到一个arrylist转换问题,做记录)
- 最近一阵子写C#的项目,遇到的一些问题以及解决的办法,跟大家分享一下```
- 关于AndroidStudio如何导入新项目LibraryProject以及遇到的一些问题
- 做项目遇到的几个小问题(first:居中问题)
- 关于C#中的DateTime类型的细节问题
- c# 中几个关于string问题
- 2014年3月29日 遇到的关于opencv将图像转换为数组的几个问题 包含cvmat 到mat转换
- 关于C#学籍管理项目控制台的问题
- 关于在ubuntu10.04版本(而且该版本安装了OPEN JDK时),安装SUN JAVA遇到了几个问题并且安装成功
- 关于用SQL语句Sql2008数据库的备份与还原常遇到的问题
- 项目中遇到关于OpenSessionInViewFilter的默认sessionFactoryBeanName的问题
- 关于执行Oracle下Sql语句中遇到的特殊字符问题解决办法。
- 关于redis的一些问题,事物方面,线程,在项目中的应用等几个点
- SQL Server Database在C#编程下遇到的问题:“provider:SQL Network Interfaces,error:26-定位指定的服务器/实例时出错”的解决办法
- 学习web开发遇到几个细节问题
- 关于Hibernate在使用原生SQL语句多表查询所遇到的问题