zoukankan      html  css  js  c++  java
  • 仿京东,qq相册效果的前台和后台实现的开发总结。

    最近要实现仿qq相册,及京东那样的图片展示效果,然后就整理一下自己的资料。

    效果图如下:

    现在有一个问题就是下面的按钮一次性的只能翻转一组图片。就是五张。

    把自己的源码给整理如下,需要这个效果的朋友可以直接使用。

    源码下载前台部分

    另外一点就是关于下面图片的功能实现。

    在后台如何实现图片的附加。

    因为这个是一个产品,右侧是有有关这个产品的详细介绍的。这个产品的详细页面的内容。

    下面是产品的相关图片展示。另外这个系统是原先开发的,只能在现在平台上作拓展。

    1.       product表存储产品的相关信息,我在数据库中另外建立一个新表extrapic,然后建立相应的字段,其中产品的编号作为product表的外键。使两个表建立关联。

    2.       建立upload.aspx页面,实现页面的多文件上传,一次性做多上传8个,这里是在网上找的代码:

    aspx

     

    View Code
      1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddProTest.aspx.cs" Inherits="Maticsoft.Web.AdminHonDu.global.AddProTest" %>
      2 
      3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      4 
      5 <html xmlns="http://www.w3.org/1999/xhtml" >
      6 <head runat="server">
      7     <title>无标题页</title>
      8     <script language="javascript" type="text/javascript">
      9     var i=1   ;
     10 
     11     function addFile()   
     12 
     13     {   
     14 
     15 
     16 
     17     if (i<8)   
     18 
     19     {var str = '<BR> <input type="file" name="File" runat="server" style=" 300px"/>'   
     20 
     21     document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)   
     22 
     23        
     24 
     25     }   
     26 
     27     else   
     28 
     29     {   
     30 
     31     alert("您一次最多只能上传8张图片!")   
     32 
     33     }   
     34 
     35     i++   
     36 
     37     }   
     38 
     39     
     40     
     41     </script>
     42 </head>
     43 <body>
     44     <form id="form1" runat="server">
     45     <fieldset>
     46     <legend>图片上传</legend>
     47          <table id="Table1" align="center" border="0" cellpadding="1" cellspacing="1" class="table"
     48             style="height: 58px" width="620">
     49             <tr>
     50                 <td align="center" background="../images/topbg1.jpg">
     51                     <font color="#0000ff" face="宋体" size="3"><strong>上传图片</strong></font></td>
     52             </tr>
     53             <tr>
     54                 <td align="center">
     55                      </td>
     56             </tr>
     57             <tr>
     58                 <td align="center">
     59                     <asp:Panel ID="Panel5" runat="server" Width="608px">
     60                            <table width="100%">
     61                             <tr>
     62                                 <td align="right" style=" 100px">
     63                                 </td>
     64                                 <td align="left">
     65                                     说明:点增加图片按钮可一次上传多张图片,单张图片大小不大于1024k,一次最多上传8张</td>
     66                             </tr>
     67                             <tr>
     68                                 <td align="right" style=" 100px">
     69                                     请选择图片:<br />
     70                                 </td>
     71                                 <td align="left"><P id="MyFile">
     72                                     <input onclick="addFile()" type="button" value="增加图片(Add)"><br />
     73                                     <input id="File1" runat="server" name="File" style=" 300px" type="file" />
     74                                
     75                                 </input>
     76                                 </td>
     77                             </tr>
     78                             <tr>
     79                                 <td align="right" style=" 100px">
     80                                     上传到的图库:</td>
     81                                 <td align="left">
     82                                     <asp:DropDownList ID="ddlAlbum" runat="server" DataSourceID="SqlDataSource1" 
     83                                         DataTextField="Name" DataValueField="ID">
     84                                     </asp:DropDownList>
     85                                     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     86                                         ConnectionString="<%$ ConnectionStrings:strConnString %>" 
     87                                         SelectCommand="SELECT [ID], [Name], [XiaoTu], [LeiId] FROM [Product]">
     88                                     </asp:SqlDataSource>
     89                                 </td>
     90                             </tr>
     91                             <tr>
     92                                 <td align="right" style=" 100px">
     93                                 </td>
     94                                 <td align="left">
     95                                     <asp:Button ID="btnUpload" runat="server" Text="开始上传" OnClick="btnUpload_Click" />
     96                                     </td>
     97                             </tr>
     98                             <tr>
     99                                 <td align="right" style=" 100px">
    100                                 </td>
    101                                 <td align="left">
    102                                     <asp:Label ID="lblMessage" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label></td>
    103                             </tr>
    104                         </table>
    105                     </asp:Panel>
    106                      
    107                 </td>
    108             </tr>
    109             <tr>
    110                 <td align="center">
    111                     <font face="宋体"></font><font face="宋体"> </font>
    112                 </td>
    113             </tr>
    114             <tr>
    115                 <td align="center">
    116                     <font face="宋体"></font>
    117                 </td>
    118             </tr>
    119         </table>
    120    
    121 </fieldset>
    122     </form>
    123 </body>
    124 </html>

    Aspx.cs

     

    View Code
      1 using System;
      2 using System.Collections;
      3 using System.Configuration;
      4 using System.Data;
      5 using System.Linq;
      6 using System.Web;
      7 using System.Web.Security;
      8 using System.Web.UI;
      9 using System.Web.UI.HtmlControls;
     10 using System.Web.UI.WebControls;
     11 using System.Web.UI.WebControls.WebParts;
     12 using System.Xml.Linq;
     13 using System.IO;
     14 using System.Data.SqlClient;
     15 
     16 
     17 namespace Maticsoft.Web.AdminHonDu.global
     18 {
     19     public partial class AddProTest : System.Web.UI.Page
     20     {
     21         database db=new database();
     22         protected void Page_Load(object sender, EventArgs e)
     23         {
     24 
     25         }
     26         protected void btnUpload_Click(object sender, EventArgs e)
     27         {
     28             lblMessage.Text = "";
     29             lblMessage.Visible = false;
     30             System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
     31             System.Text.StringBuilder strmsg = new System.Text.StringBuilder("");
     32             string[] rd = Request.Form[1].Split(',');//获得图片描述的文本框字符串数组,为对应的图片的描述
     33             string albumid = ddlAlbum.SelectedValue.Trim();
     34             int ifile;
     35             for (ifile = 0; ifile < files.Count; ifile++)
     36             {
     37                 if (files[ifile].FileName.Length > 0)
     38                 {
     39                     System.Web.HttpPostedFile postedfile = files[ifile];
     40                     if (postedfile.ContentLength / 1024 > 1024)//单个文件不能大于1024k
     41                     {
     42                         strmsg.Append(Path.GetFileName(postedfile.FileName) + "---不能大于1024k<br>");
     43                         break;
     44                     }
     45                     string fex = Path.GetExtension(postedfile.FileName);
     46                     if (fex != ".jpg" && fex != ".JPG" && fex != ".gif" && fex != ".GIF")
     47                     {
     48                         strmsg.Append(Path.GetFileName(postedfile.FileName) + "---图片格式不对,只能是jpg或gif<br>");
     49                         break;
     50                     }
     51                 }
     52             }
     53             if (strmsg.Length <= 0)//说明图片大小和格式都没问题
     54             {
     55                 //以下为创建图库目录
     56                 string dirname = "pic0" + ddlAlbum.SelectedValue.Trim();
     57                 string dirpath = Server.MapPath("http://www.cnblogs.com/pic");
     58                 dirpath = dirpath + @"/" + dirname;
     59                 if (Directory.Exists(dirpath) == false)
     60                 {
     61                     Directory.CreateDirectory(dirpath);
     62                 }
     63                 Random ro = new Random();
     64                 int name = 1;
     65                 for (int i = 0; i < files.Count; i++)
     66                 {
     67                     System.Web.HttpPostedFile myFile = files[i];
     68                     string FileName = "";
     69                     string FileExtention = "";
     70                     string PicPath = "";
     71                     FileName = System.IO.Path.GetFileName(myFile.FileName);
     72                     string stro = ro.Next(01000).ToString() + name.ToString();//产生一个随机数用于新命名的图片
     73                     string NewName = DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + stro;
     74                     if (FileName.Length > 0)//有文件才执行上传操作再保存到数据库
     75                     {
     76                         FileExtention = System.IO.Path.GetExtension(myFile.FileName);
     77 
     78                         string ppath = dirpath + @"/" + NewName + FileExtention;
     79                         myFile.SaveAs(ppath);
     80                         string FJname = FileName;
     81                         PicPath =dirname + @"/" + NewName + FileExtention;
     82 
     83                     }
     84                     AddPicture(PicPath,albumid);//将图片信息保存到数据库
     85                     if (name == 1)//如果为每次更新的第一张图片,则将它更新为象册的封面
     86                     {
     87                     }
     88                     name = name + 1;//用来重命名规则的变量
     89 
     90                 }
     91             }
     92             else
     93             {
     94                 lblMessage.Text = strmsg.ToString();
     95                 lblMessage.Visible = true;
     96             }
     97         }
     98       
     99 
    100    private void AddPicture(string imgpath,string ablumid)   
    101    {
    102        db.Opendatabase();
    103        SqlConnection  conn = db.con;
    104        string sql = "insert ProductPic (OtherPic,ProductID) values('"+imgpath+"','"+ablumid+"')";
    105        db.updatebase(sql);
    106        db.Closedatabase();
    107    }
    108 
    109 
    110   }
    111 
    112 }

    3.       在产品页面利用repeater控件绑定传到extrapic表中的图片的路径。实现上图所示的效果。

    开发过程中存在的几个问题:

    1.       js未结束的字符串常量。当调用js的时候,出现上述的错误,在网上搜索了一下,原来是编码方式不一致导致的。一个是utf-8,一个是gb2312.

    2.       将截断字符串或者二进制数据。定义的存储图片路径为nvarchar50),后来修改为varchar500

    3.       另外就是那个图片上传的时候,当时我用的方法是把对应的多个图片名都放到product表中的一个字段里面,然后用逗号分隔,后来在利用split函数分隔,然后提取相应的图片,但是这样的话,到产品详细页面的时候,详细产品的图片就又要提取第一个图片的图片名。也就是绑定到详细页面的那个图片名字段里存储的是多个图片名,造成很麻烦。于是我就用从新建立一个表的方式。算是一种思考过程吧,留作自己以后参考,呵呵,菜鸟一个,慢慢提升吧!

    4.       前台调用后台的方法。<% # 方法名(Eval(参数))%>比如前台的repeater控件中绑定的不是数据库字段的名字,而是数据库对应字段作为参数然后输出的值,则用这种方式来实现。

    5.       <asp:image>控件在gridview中绑定数据源中的图片不显示,不知道咋回事,后来用,<img>标签搞定。

    6.       遍历文件实现对文件的删除功能的实现。实例化FileInfo类后,其中的delete方法要的是绝对路径,而在web中一般用的是相对路径,所以要用到server.mappath方法。

    7.       索引超过数组范围。这个实在我修改多文件上传功能的实现过程中出现的问题,应该就是rdi】这个地方有问题,在网上搜索一下,也没深入研究,后来我把利用关于文字描述的那些全部给灭拉,就没有上述的问题啦。

    啰啰嗦嗦就暂时记录这么多,给自己以后备用。

  • 相关阅读:
    hdu5514 非2的次幂容斥原理
    「NOIP2015」斗地主
    「NOIP2009」靶形数独
    「CF521D」Shop
    「HNOI2015」菜肴制作
    「NOIP2011」观光公交
    「NOI2015」荷马史诗
    「JSOI2007」建筑抢修
    「CF161B」Discounts
    叠罗汉
  • 原文地址:https://www.cnblogs.com/gxg2008540/p/1995208.html
Copyright © 2011-2022 走看看