webform中Images图片问题
Posted masonblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webform中Images图片问题相关的知识,希望对你有一定的参考价值。
1、格式问题
程序中仅仅限制为*.jpg。
2、文件上传使用FileUpload组件,
之后将文件保存到服务器的文件夹中
//获取传文件的名字
string fileName = FileId.FileName;
//判断upload文件夹是否存在,不存在则创建
if (Directory.Exists(Server.MapPath("~/imgupload")) == false)
{
Directory.CreateDirectory(Server.MapPath("~/imgupload"));
}
//获取服务器路径地址
string savePath = Server.MapPath("~/imgupload/");
//设置上传到服务器端的文件名称
string strFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random(DateTime.Now.Second).Next(10000) + fileName.Substring(fileName.LastIndexOf(‘.‘));
FileId.SaveAs(savePath + strFileName);
3、将图片的名称保存到数据库时,文件名被截断,
完整的为:201610211031569820.jpg
但是保存到数据的为:201610211031569820.j。
原因:
刚开始设计表的时候将src字段的长度设置为nchar(20),
然后使用动软生成的代码的增加一条数据的方法
/// <summary>
/// 增加一条数据
/// </summary>
public int Add(web.Model.tb_images model)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("insert into tb_images(");
strSql.Append("src,foreign_id,upload_date)");
strSql.Append(" values (");
strSql.Append("@src,@foreign_id,@upload_date)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@src", SqlDbType.NChar,20),
new SqlParameter("@foreign_id", SqlDbType.NChar,50),
new SqlParameter("@upload_date", SqlDbType.DateTime)};
parameters[0].Value = model.src;
parameters[1].Value = model.foreign_id;
parameters[2].Value = model.upload_date;
object obj = DbHelperSQL.GetSingle(strSql.ToString(),parameters);
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
此处添加的@src 格式为nchar,长度为20。也就是只保存20的长度,所以会被截断。
解决:
将长度修改为50
new SqlParameter("@src", SqlDbType.NChar,50),
4、浏览器中无法显示图片
问题:
在程序中拼接的图片地址为:C:/Users/Windows10/Desktop/10210834/Web/imgupload/201610211000324438.jpg
在浏览器中直接访问是可以查看的,但是在img中的src,就无法访问。
原因:
web访问 应该给予http地址,而不是本机地址。
解决:
在web.config中添加键,用于修改服务器地址
<add key="MyUrl" value="http://localhost:20179/"/>
程序中的拼接
服务器地址+文件夹名称+文件名称(包括扩展名)
Image1.ImageUrl = ImgUrl+"/imgupload/" + strFileName;
5、仍然无法显示图片
问题:
此时获取的src地址为,后面多了很多乱字符
原因:
DAL中的添加方法,设置的src数据类型为nchar,50。当字符串长度不足50时,会自动填充字符。
解决:
将src的数据类型修改为nvarchar,50。
字符串的长度根据的实际赋值的字符串设定,但是最长为50。
6、上传的图片在img中变形
解决:指定image组件的宽或高的最大像素,之后图片在载入时就会自动按此进行同比例缩放。
<asp:Image ID="Image1" runat="server" Height="300px" />
以上是关于webform中Images图片问题的主要内容,如果未能解决你的问题,请参考以下文章