您的位置:首页 > 数据库

做项目时遇到的几个关于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多的图片,这样的话,如果加载的图片多了,页面打开就会很慢。一个解决办法是把上传的图片压缩成位图。我自己封装了一个函数,以后做项目可以用得上:

/// <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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐