【移动应用开发技术】asp.net微信开发中永久素材管理的示例分析_第1页
【移动应用开发技术】asp.net微信开发中永久素材管理的示例分析_第2页
【移动应用开发技术】asp.net微信开发中永久素材管理的示例分析_第3页
【移动应用开发技术】asp.net微信开发中永久素材管理的示例分析_第4页
【移动应用开发技术】asp.net微信开发中永久素材管理的示例分析_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】微信开发中永久素材管理的示例分析

/upload/information/20201208/260/11907.jpg/upload/information/20201208/260/11910.jpg///

<summary>

///

微信永久素材实体类,用于保存永久素材上传至微信服务器后返回的数据

///

</summary>

public

class

WxSuCaiInfo

{

public

int

SuCaiId

{

get;

set;

}//自增列序号

public

string

SuCaiUrl

{

get;

set;

}//

存储文件名

public

string

SuCaiType

{

get;

set;

}//素材类型,可分为image,voice,video,thumb(缩略图)

public

string

SuCaiTitle

{

get;

set;

}//图文消息的标题

public

string

SuCaiDigest

{

get;

set;

}//图文消息的摘要

public

string

SuCaiauthor

{

get;

set;

}//图文消息的作者

public

string

SuCaishow_cover_pic

{

get;

set;

}//图文消息是否显示封面.保存0或1

public

string

SuCaicontent

{

get;

set;

}//图文消息的正文内容

public

string

SuCaicontent_source_url

{

get;

set;

}//图文消息的原文链接

public

string

media_ID

{

get;

set;

}//上传至微信服务器后,返回的永久mediaID

public

string

Url

{

get;

set;

}//上传至微信服务器后,返回的图片URL,仅图片才会返回此属性

public

string

uploadDate

{

get;

set;

}//上传日期时间

}第二步:上传图片至微信服务器,成功后将返回的media_id和url两个字段数据和其他字段数据一并保存到本地服务器,上传的代码如下:

///

<summary>

///

上传图片至微信服务器,并且本地也保存一份

///

</summary>

///

<param

name="sender"></param>

///

<param

name="e"></param>

protected

void

LinBtnUploadImg_Click(object

sender,

EventArgs

e)

{

if

(this.FileUploadImage.HasFile)

{

string

fileContentType

=

FileUploadImage.PostedFile.ContentType;

if

(fileContentType

==

"image/bmp"

||

fileContentType

==

"image/gif"

||

fileContentType

==

"image/png"

||

fileContentType

==

"image/x-png"

||

fileContentType

==

"image/jpeg"

||

fileContentType

==

"image/pjpeg")

{

int

fileSize

=

this.FileUploadImage.PostedFile.ContentLength;

if

(fileSize

<=

2097152)

{

string

fileName

=

this.FileUploadImage.PostedFile.FileName;

//

客户端文件路径

string

filepath

=

FileUploadImage.PostedFile.FileName;

//得到的是文件的完整路径,包括文件名,如:C:\Documents

and

Settings\Administrator\My

Documents\My

Pictures\20022775_m.jpg

//string

filepath

=

FileUpload1.FileName;

//得到上传的文件名20022775_m.jpg

string

filename

=

filepath.Substring(filepath.LastIndexOf("\\")

+

1);//20022775_m.jpg

string

serverpath

=

Server.MapPath("~/WeiXinImg/")

+

filename;//取得文件在服务器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg

//把图片上传至本地服务器

this.FileUploadImage.PostedFile.SaveAs(serverpath);//将上传的文件另存为

//上传图片素材至微信服务器,永久保存

WeiXinServer

wxs

=

new

WeiXinServer();

///从缓存读取accesstoken

string

Access_token

=

Cache["Access_token"]

as

string;

if

(Access_token

==

null)

{

//如果为空,重新获取

Access_token

=

wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token",

Access_token,

null,

DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string

Access_tokento

=

Access_token.Substring(17,

Access_token.Length

-

37);

string

url

=

string.Format("/cgi-bin/material/add_material?access_token={0}&type={1}",

Access_tokento,"image");

try

{

string

res

=

HttpUploadFile(url,

serverpath);

//判断res结果集里面是否包含media_id

if

(res.Contains("media_id"))

{

//如果能进行到这里,那说明图片已经上传至微信服务器,是永久素材哦,

//开始解析json串,使用前需要引用Newtonsoft.json.dll文件

JObject

jsonObj

=

JObject.Parse(res);

//图片上传成功后,返回的是两个字段,media_id和url

//将两个字段开始存入数据库,保存数据,方便获取列表的时候直接从本地服务器读取

WxSuCaiInfo

wsc

=

new

WxSuCaiInfo();

wsc.SuCaiUrl

=

filename;//注意,这里保存的图片名称

wsc.SuCaiType

=

"image";//文件类型

wsc.media_ID

=

jsonObj["media_id"].ToString();//这个属性保存的是微信返回的media_id

wsc.Url

=

jsonObj["url"].ToString();//这个属性保存的才是微信返回的url

wsc.uploadDate

=

System.DateTime.Now.ToString();//记录当前文件上传日期时间

//存入数据库

WxSuCaiService

wscs

=

new

WxSuCaiService();

int

num

=

wscs.AddWxSuCaiInfo(wsc);

if

(num

>

0)

{

Response.Write("<script>alert('上传图片素材成功!');location='WxSuCaiMannageImageList.aspx';</script>");

}

else

{

Response.Write("<script>alert('上传图片素材失败!');location='WxSuCaiMannageImageList.aspx';</script>");

}

}

}

catch(Exception

ex)

{

Response.Write(ex.Message.ToString());

}

}

else

{

Response.Write("<script>alert('上传文件不能大于2M!')</script>");

}

}

else

{

Response.Write("<script>alert('只支持BMP,GIF,PNG,JPG,JPEG格式的图片!')</script>");

}

}

else

{

Response.Write("<script>alert('请选择图片!')</script>");

}

}

///

<summary>

///

全选全不选

///

</summary>

///

<param

name="sender"></param>

///

<param

name="e"></param>

protected

void

CheckAll_CheckedChanged(object

sender,

EventArgs

e)

{

foreach

(DataListItem

item

in

this.DLSuCaiImageList.Items)

{

CheckBox

checkIn

=

item.FindControl("CheckIn")

as

CheckBox;

checkIn.Checked

=

CheckAll.Checked;

}

}

///

<summary>

///

删除选中项

///

</summary>

///

<param

name="sender"></param>

///

<param

name="e"></param>

protected

void

LinkBtnDeleteSelected_Click(object

sender,

EventArgs

e)

{

Boolean

ischeck

=

false;

foreach

(DataListItem

item

in

this.DLSuCaiImageList.Items)

{

CheckBox

checkIn

=

item.FindControl("CheckIn")

as

CheckBox;

if

(checkIn.Checked)

{

ischeck

=

true;

Label

lbSuCaiId

=

item.FindControl("lbSuCaiId")

as

Label;

Label

lbSuCaiUrl

=

item.FindControl("lbSuCaiUrl")

as

Label;

Label

lbmedia_ID

=

item.FindControl("lbmedia_ID")

as

Label;

//删除微信服务器上的图片

WeiXinServer

wxs

=

new

WeiXinServer();

string

res

=

"";

///从缓存读取accesstoken

string

Access_token

=

Cache["Access_token"]

as

string;

if

(Access_token

==

null)

{

//如果为空,重新获取

Access_token

=

wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token",

Access_token,

null,

DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string

Access_tokento

=

Access_token.Substring(17,

Access_token.Length

-

37);

string

posturl

=

"/cgi-bin/material/del_material?access_token="

+

Access_tokento;

//POST数据例子:

POST数据例子:{"media_id":MEDIA_ID}

string

media_id

=

lbmedia_ID.Text.ToString();

string

postData

=

"{\"media_id\":\""

+

media_id

+

"\"}";

res

=

wxs.GetPage(posturl,

postData);

if

(res.Contains("errcode"))

{

//开始解析json串,使用前需要引用Newtonsoft.json.dll文件

JObject

jsonObj

=

JObject.Parse(res);

if

(jsonObj["errcode"].ToString().Equals("0"))

{

///获取本地服务器的路径

string

serverPathss

=

Server.MapPath("~/WeiXinImg/")

+

lbSuCaiUrl.Text.ToString();

//验证本地服务的路径是否存在该图片

if

(File.Exists(serverPathss))

{

//如果存在就删除

File.Delete(serverPathss);

}

WxSuCaiService

wscs

=

new

WxSuCaiService();

//通过media_id删除本地服务器数据库记录

int

num

=

wscs.DeleteWxSuCaiInfo(lbmedia_ID.Text.ToString());

if

(num

>

0)

{

Response.Write("<script>alert('图片素材删除成功!');location='WxSuCaiMannageImageList.aspx';</script>");

}

else

{

Response.Write("<script>alert('微信服务器图片删除成功!本地服务器图片素材删除失败!');location='WxSuCaiMannageImageList.aspx';</script>");

}

}

}

}

}

if

(!ischeck)

{

ScriptManager.RegisterClientScriptBlock(this.Page,

this.GetType(),

"",

"alert('请先选中删除项!!!')",

true);

return;

}

}<!DOCTYPE

html>

<html

xmlns="/1999/xhtml">

<head

runat="server">

<meta

http-equiv="Content-Type"

content="text/html;

charset=utf-8"/>

<title></title>

<link

href="css/style.css"

rel="Stylesheet"

type="text/css"

/>

<style

type="text/css">

.meun

{

width:1100px;

height:40px;

margin-left:20px;

line-height:40px;

margin-top:10px;border-bottom:1px

solid

#d6d6d6;

}

.meun

ul

{

padding:0px;

margin:0px;

}

.meun

ul

li{

float:left;

width:100px;

text-align:center;list-style:none;

}

.meun

ul

li:hover{

border-bottom:3px

solid

#ecd9df;

cursor:pointer;

}

a:hover

{

color:#000;

}

.checkedstyle

{

border-bottom:3px

solid

#208008;

}

.meun_imglist

{

width:1050px;

min-height:300px;

border:1px

solid

#d6d6d6;

margin-top:20px;

margin-left:35px;

margin-bottom:30px;

}

.uploadstyle

{

width:300px;

background-image:url('images/inputbg.gif');

background-repeat:repeat-x;

height:35px;

border:1px

solid

#d6d6d6;

float:left;

margin-bottom:10px;

line-height:35px;

}

.CheckAll

{

float:left;

padding:5px;

}

.CheckIn

{

float:left;

padding:2px;

}

.DLSuCaiImageList

{

margin-top:10px;

margin-left:10px;

}

</style>

</head>

<body>

<form

id="form1"

runat="server">

<p

class="place">

<span>位置:</span>

<ul

class="placeul">

<li><a

href="WelCome.aspx"

target="rightFrame">首页</a></li>

<li>微信管理</li>

<li>德桥员工服务中心--素材管理</li>

</ul>

</p>

<p

style="height:30px;

line-height:30px;

margin-top:10px;

margin-left:45px;"><span

style="float:left;

font-size:16px;">素材管理</span><span

style="color:red;

float:left;

margin-left:20px;">永久素材和微信官网同步,您在这里所操作的任何一项,将影响到官网后台素材管理,谨慎操作!</span></p>

<p

class="meun">

<ul>

<li><a

href="WxSuCaiManageList.aspx">图文消息</a></li>

<li

class="checkedstyle"><a

href="WxSuCaiMannageImageList.aspx">图片库</a></li>

<li><a

href="#">语音</a></li>

<li><a

href="#">视频</a></li>

</ul>

</p>

<p

class="meun_imglist">

<p

style="margin:5px

auto

10px

10px;

height:36px;

line-height:36px;">

<asp:FileUpload

ID="FileUploadImage"

CssClass="uploadstyle"

runat="server"

/>

<asp:LinkButton

ID="LinBtnUploadImg"

runat="server"

OnClick="LinBtnUploadImg_Click"><span

style="background-image:url('images/buttonbg.png');

width:111px;

height:35px;

line-height:35px;

margin-bottom:10px;

font-weight:bold;

text-align:center;

float:left;

margin-left:10px;

color:#fff;">上传</span></asp:LinkButton>

<span

style="margin-left:30px;

color:red;"

>

支持jpg,gif,png,bmp格式图片,大小2M内,如上传成功后,图片未能显示,请将图片重新命名后再尝试上传.</span>

</p>

<p

style="

clear:both;line-height:35px;

margin:10px

auto

auto

auto;

height:35px;

width:1030px;

background-color:#f6f6f6;

border-radius:5px;

border-bottom:1px

solid

#d6d6d6;">

<asp:CheckBox

ID="CheckAll"

CssClass="CheckAll"

AutoPostBack="true"

runat="server"

OnCheckedChanged="CheckAll_CheckedChanged"

/>

<span

style="float:left;

padding:3px;">全选</span>

<asp:LinkButton

ID="LinkBtnDeleteSelected"

runat="server"

OnClick="LinkBtnDeleteSelected_Click"><span

style="width:111px;

height:25px;

line-height:25px;

font-weight:bold;

text-align:center;

float:left;

margin-left:15px;

color:#000;

background-color:#fff;

margin-top:5px;

border:1px

solid

#ecd9df;

border-radius:3px;">删除选中</span></asp:LinkButton>

</p>

<asp:DataList

ID="DLSuCaiImageList"

CssClass="DLSuCaiImageList"

runat="server"

RepeatColumns="6">

<ItemTemplate>

<p

style="width:150px;

height:180px;

margin-right:22px;margin-bottom:15px;

border:1px

solid

#d9d9d9;">

<img

src='../WeiXinImg/<%#

Eval("SuCaiUrl")

%>'

style="height:120px;

width:150px;

border:0px;"

/>

<p

style="width:150px;height:25px;

line-height:25px;

text-indent:3px;

border-top:1px

solid

#d9d9d9;">

<asp:CheckBox

ID="CheckIn"

CssClass="CheckIn"

runat="server"

/>

<asp:Label

ID="lbSuCaiUrl"

ToolTip='<%#

Eval("SuCaiUrl")%>'

runat="server"

Text='<%#

Eval("SuCaiUrl").ToString().Length>8?Eval("SuCaiUrl").ToString().Substring(0,8)+"...":Eval("SuCaiUrl").ToString()

%>'></asp:Label>

</p>

<p

style="

clear:both;

width:150px;height:25px;

line-height:25px;

text-indent:5px;

border-top:1px

solid

#d9d9d9;">

<%#

Eval("uploadDate").ToString().Length>20?Eval("uploadDate").ToString().Substring(0,20)+"...":Eval("uploadDate").ToString()

%>

<asp:Label

ID="lbSuCaiId"

runat="server"

Visible="false"

Text='<%#

Eval("SuCaiId")

%>'></asp:Label>

<asp:Label

ID="lbmedia_ID"

runat="server"

Visible="false"

Text='<%#

Eval("media_ID")

%>'></asp:Label>

</p>

</p>

</ItemTemplate>

</asp:DataList>

</p>

</form>

</body>

</html>/upload/information/20201208/260/11912.jpg/upload/information/20201208/260/11916.jpg

///

<summary>

///

确认选择,选中之后,跳转至新建图文页面

///

</summary>

///

<param

name="sender"></param>

///

<param

name="e"></param>

protected

void

LinkBtnSubMitSelected_Click(object

sender,

EventArgs

e)

{

Boolean

bools

=

false;

int

num

=

0;

foreach

(DataListItem

item

in

this.DLSuCaiImageList.Items)

{

CheckBox

checkIn

=

item.FindControl("CheckIn")

as

CheckBox;

if

(checkIn.Checked)

{

num

+=

1;

bools

=

true;

}

}

if

(!bools)

{

ScriptManager.RegisterClientScriptBlock(this.Page,

this.GetType(),

"",

"alert('请选择一个图片素材!!!')",

true);

return;

}

if

(num

>=

2)

{

ScriptManager.RegisterClientScriptBlock(this.Page,

this.GetType(),

"",

"alert('您只能选择一个图片素材!');",

true);

return;

}

else

{

foreach

(DataListItem

item

in

this.DLSuCaiImageList.Items)

{

CheckBox

checkIn

=

item.FindControl("CheckIn")

as

CheckBox;

if

(checkIn.Checked)

{

///获取选中图片media_id

Label

lbmedia_ID

=

item.FindControl("lbmedia_ID")

as

Label;

Session["imgmedia_id"]

=

lbmedia_ID.Text.ToString();

Response.Write("<script>alert('已选择!');window.opener.location.reload();window.close();</script>");

}

}

}

}

if

(Session["imgmedia_id"]

!=

null)

{

WxSuCaiService

wscs

=

new

WxSuCaiService();

WxSuCaiInfo

wscinfo

=

wscs.GetWxSuCaiInfo(Session["imgmedia_id"].ToString());

if(wscinfo!=null)

{

this.ImgTuWen.ImageUrl

=

"~/WeiXinImg/"

+

wscinfo.SuCaiUrl.ToString();

this.ImgTuWen2.ImageUrl

=

"~/WeiXinImg/"

+

wscinfo.SuCaiUrl.ToString();

this.ImgTuWen2.Visible

=

true;

Session["imgmedia_id"]

=

wscinfo.media_ID.ToString();//图片的media_id

Session["fileNameimg"]

=

wscinfo.SuCaiUrl.ToString();//图片的文件名称

}

}/upload/information/20201208/260/11917.jpg/upload/information/20201208/260/11918.jpg

///

<summary>

///

绑定事件

///

</summary>

///

<param

name="sender"></param>

///

<param

name="e"></param>

protected

void

DLMpNewsList_ItemDataBound(object

sender,

DataListItemEventArgs

e)

{

if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)

{

LinkButton

LinkBtnDeleteSucai

=

e.Item.FindControl("LinkBtnDeleteSucai")

as

LinkButton;

LinkBtnDeleteSucai.Attributes.Add("OnClick","return

confirm('您确定删除该图文素材???删除后将和微信官网同步删除!!')");

HyperLink

HyperLinkEdit

=

e.Item.FindControl("HyperLinkEdit")

as

HyperLink;

HyperLinkEdit.Attributes.Add("OnClick",

"return

confirm('即将进入编辑模式!!是否执行下一步操作??')");

Label

lbmedia_ID

=

e.Item.FindControl("lbmedia_ID")

as

Label;

HyperLinkEdit.NavigateUrl

=

"WxNewTuWen.aspx?media_id="

+

lbmedia_ID.Text.ToString();//把图文消息的media_id传参到新建图文界面

}

}/upload/information/20201208/260/11919.jpg

if(!Page.IsPostBack)

{

///编辑模式

if

(Request.QueryString["media_id"]

!=

null)

{

string

media_id

=

Request.QueryString["media_id"].ToString();

Session["sucaimedia_id"]

=

media_id;

WxSuCaiService

wscs

=

new

WxSuCaiService();

WxSuCaiInfo

wscinfo

=

wscs.GetWxSuCaiInfo(media_id);

if

(wscinfo

!=

null)

{

this.txttuwen_title.Value

=

wscinfo.SuCaiTitle.ToString();

if

(wscinfo.SuCaiTitle.ToString().Length

>

15)

{

this.biaoti_yulan.InnerText

=

wscinfo.SuCaiTitle.ToString().Substring(0,

15)

+

"...";

}

else

{

this.biaoti_yulan.InnerText

=

wscinfo.SuCaiTitle.ToString();

}

this.txttuwen_author.Value

=

wscinfo.SuCaiauthor.ToString();

this.txtzhaiyao.InnerText

=

wscinfo.SuCaiDigest.ToString();

this.ImgTuWen.ImageUrl

=

"~/WeiXinImg/"

+

wscinfo.SuCaiUrl.ToString();

this.ImgTuWen2.ImageUrl

=

"~/WeiXinImg/"

+

wscinfo.SuCaiUrl.ToString();

this.ImgTuWen2.Visible

=

true;

Session["imgmedia_id"]

=

wscinfo.SuCaithumb_media_id.ToString();

this.LinkBtnDeleteImg.Visible

=

true;

if

(!String.IsNullOrWhiteSpace(wscinfo.SuCaicontent_source_url.ToString()))

{

this.txtYuanWenUrl.Text

=

wscinfo.SuCaicontent_source_url.ToString();

this.txtYuanWenUrl.Visible

=

true;

this.CheckYuanWen.Checked

=

true;

}

this.txtYuanWenUrl.Text

=

wscinfo.SuCaicontent_source_url.ToString();

this.tbContent.InnerText

=

wscinfo.SuCaicontent.ToString();

if

(wscinfo.SuCaishow_cover_pic.ToString().Equals("1"))

{

this.CheckFengMianShow.Checked

=

true;

}

else

{

this.CheckFengMianShow.Checked

=

false;

}

}

}

}/upload/information/20201208/260/11920.jpg///

<summary>

///

保存图文素材和修改按钮公用

///

</summary>

///

<param

name="sender"></param>

///

<param

name="e"></param>

protected

void

LinkBtnSaveYongjiu_Click(object

sender,

EventArgs

e)

{

//非空验证

if

(String.IsNullOrWhiteSpace(this.txttuwen_title.Value.ToString()))

{

ScriptManager.RegisterClientScriptBlock(this.Page,

this.GetType(),

"",

"alert('请输入图文标题!');",

true);

return;

}

if

(this.ImgTuWen2.ImageUrl.ToString().Equals(""))

{

ScriptManager.RegisterClientScriptBlock(this.Page,

this.GetType(),

"",

"alert('必须上传一张图片!');",

true);

return;

}

if

(String.IsNullOrWhiteSpace(this.tbContent.InnerText.ToString()))

{

ScriptManager.RegisterClientScriptBlock(this.Page,

this.GetType(),

"",

"alert('请输入正文内容!');",

true);

return;

}

//对各项进行赋值

WeiXinServer

wxs

=

new

WeiXinServer();

///从缓存读取accesstoken

string

Access_token

=

Cache["Access_token"]

as

string;

if

(Access_token

==

null)

{

//如果为空,重新获取

Access_token

=

wxs.GetAccessToken();

//设置缓存的数据7000秒后过期

Cache.Insert("Access_token",

Access_token,

null,

DateTime.Now.AddSeconds(7000),

System.Web.Caching.Cache.NoSlidingExpiration);

}

string

Access_tokento

=

Access_token.Substring(17,

Access_token.Length

-

37);

//根据session判断media_id是否为空,也可根据request.queryString["media_id"]进行判断是否为空

if

(Session["sucaimedia_id"]

!=

null)

{

//执行更新操作

//{

//

"media_id":MEDIA_ID,

//

"index":INDEX,

//

"articles":

{

//

"title":

TITLE,

//

"thumb_media_id":

THUMB_MEDIA_ID,

//

"author":

AUTHOR,

//

"digest":

DIGEST,

//

"show_cover_pic":

SHOW_COVER_PIC(0

/

1),

//

"content":

CONTENT,

//

"content_source_url":

CONTENT_SOURCE_URL

//

}

//}

string

isshow_cover_pic

=

"";

if

(this.CheckFengMianShow.Checked)

{

isshow_cover_pic

=

"1";

}

else

{

isshow_cover_pic

=

"0";

}

string

description

=

NoHTML(this.tbContent.InnerText.ToString());

s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论