在好例子网,分享、交流、成长!
您当前所在位置:首页ASP 开发实例ASP网页编程 → asp.net SwfUpload 上传实例完整源码下载

asp.net SwfUpload 上传实例完整源码下载

ASP网页编程

下载此实例
  • 开发语言:ASP
  • 实例大小:0.39M
  • 下载次数:15
  • 浏览次数:244
  • 发布时间:2015-01-30
  • 实例类别:ASP网页编程
  • 发 布 人:renwen5201314
  • 文件格式:.zip
  • 所需积分:10
 相关标签: 上传

实例介绍

【实例简介】SwfUpload案例
【实例截图】

【核心代码】

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Configuration;
using System.Xml;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Web.UI;
using System.Net;
using IMMENSITY.SWFUploadAPI.Enums;

namespace IMMENSITY.SWFUploadAPI
{
    /// <summary>
    /// Description:文件上传方法类
    /// Author:张盼
    /// Date:2010-01-16
    /// 
    /// 注意:如果需要附加图片水印,需要在WebConfig中添加如下配置
    /// <appSettings><add key="WaterMarkPath" value="路径"/></appSettings>
    /// 如果需要添加小图,需要在WebConfig中添加如下配置,默认为small_
    /// <appSettings><add key="SmallPicPrefix" value="前缀"/></appSettings>
    /// 如果需要文字水印,需要在WebConfig中添加如下配置
    /// <appSettings><add key="WaterMarkText" value="文字内容"/></appSettings>
    /// </summary>
    public class SWFUploadFile
    {
        /// <summary>
        /// 数据请求基类
        /// </summary>
        private HttpPostedFile _HPFile = null;
        /// <summary>
        /// 水印图片文件
        /// </summary>
        private string _waterMarkImgPath = string.Empty;
        /// <summary>
        /// 网站根目录
        /// </summary>
        private string _webPath = System.Web.HttpContext.Current.Server.MapPath("~/");
        public SWFUploadFile()
        {
            //默认上传路径
            this.Path = System.Web.HttpContext.Current.Server.MapPath("~/");
            //大图子文件夹
            this.BigChildPath = "b";
            //小图子文件夹
            this.SmallChildPath = "s";
            //水印图片路径
            this._waterMarkImgPath = Path   "/"   SWFWebConfigManage.GetByAppSettingsKey("WaterMarkPath");
            //当前时间用作文件名(年,月,日,时,分,秒,3位毫秒)
            this.NewFileName = DateTime.Now.ToString("yyyyMMddhhmmssfff");
            //默认不生成小图
            this.SmallPic = false;
            //默认生成小图片最大的宽度
            this.MaxWith = 140;
            //默认生成小图片最大的高度
            this.MaxHeight = 140;
            //默认不需要水印
            this.IsWaterMark = false;
            //默认水印类型
            this.WMType = SWFWaterMarkType.WM_IMAGE;
            //水印位置,默认为右下
            this.WMLocation = SWFWaterMarkLocation.WM_BOTTOM_RIGHT;
            //水印文字
            this.WaterMarkText = SWFWebConfigManage.GetByAppSettingsKey("WaterMarkText");//水印文字
        }
        #region 公共属性
        /// <summary>
        /// 上传路径 默认:网站根目录
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 大图子文件夹
        /// </summary>
        public string BigChildPath { get; set; }
        /// <summary>
        /// 小图子文件夹
        /// </summary>
        public string SmallChildPath { get; set; }
        ///<summary>
        /// 新的文件名 默认:年 月 日 时 分 秒 毫秒
        ///</summary>
        public string NewFileName { get; set; }
        ///<summary>
        /// 上传小图片最大宽度 默认:140
        ///</summary>
        public int MaxWith { get; set; }
        ///<summary>
        /// 上传小图片最大高度度 默认:140
        ///</summary>
        public int MaxHeight { get; set; }
        ///<summary>
        /// 是否需要小图  已否决
        ///</summary>
        public bool SmallPic { get; set; }
        /// <summary>
        /// 是否添加水印
        /// </summary>
        public bool IsWaterMark { get; set; }
        /// <summary>
        /// 水印类型
        /// </summary>
        public SWFWaterMarkType WMType { get; set; }
        /// <summary>
        /// 水印位置
        /// </summary>
        public SWFWaterMarkLocation WMLocation { get; set; }
        /// <summary>
        /// 文字水印
        /// </summary>
        private string WaterMarkText { get; set; }

        #endregion
        #region 上传
        //根据 mime 类型,返回编码器
        private System.Drawing.Imaging.ImageCodecInfo GetEncoderInfo(string mimeType)
        {
            System.Drawing.Imaging.ImageCodecInfo result = null;

            //检索已安装的图像编码解码器的相关信息。
            System.Drawing.Imaging.ImageCodecInfo[] encoders =
                System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
            for (int i = 0; i < encoders.Length; i  )
            {
                if (encoders[i].MimeType == mimeType)
                {
                    result = encoders[i];
                    break;
                }
            }
            return result;
        }
        /// <summary>
        /// 开始上传
        /// </summary>
        /// <param name="hpfBase">数据请求基类</param>
        /// <param name="savePath">要保存的路径</param>
        /// <param name="oldFileName">旧文件名称,便于删除(注:如果存在文件夹路径,程序将自动去除,只留下文件名)</param>
        /// <param name="state">上传状态.  0:上传成功.  1:没有选择要上传的文件.  2:上传文件类型不符.   3:上传文件过大  -1:应用程序错误.</param>
        /// <returns>文件名</returns>
        public string SaveFile(HttpPostedFile hpfBase, string savePath, string oldFileName, ref int state)
        {
            oldFileName = this.ClearFileFolder(oldFileName);
            this._HPFile = hpfBase;
            return this.Save(savePath, oldFileName, ref state);
        }

        /// <summary>
        /// 去除文件名中的文件夹名
        /// </summary>
        /// <param name="fileName">文件名</param>
        /// <returns></returns>
        private string ClearFileFolder(string fileName)
        {
            fileName = fileName.Trim().Replace("//", "/").Replace("\\", "/");
            if (fileName != string.Empty && fileName.IndexOf(".") != -1 && fileName.IndexOf("/") != -1)
            {
                fileName = fileName.Substring(fileName.LastIndexOf("/")   1, fileName.Length - fileName.LastIndexOf("/") - 1);
            }
            return fileName;
        }
        /// <summary>
        /// 上传核心
        /// 返回文件名或上传状态
        /// </summary>
        /// <param name="inputFile">上传控件</param>
        /// <param name="savePath">存放的文件夹   从网站根目录起</param>
        /// <param name="oldFileName">在修改图片时指定旧图片名以便删除   默认为空字符串</param>
        /// <returns>返回上传状态.  0:上传成功.  1:没有选择要上传的文件.  2:上传文件类型不符.   3:上传文件过大  -1:应用程序错误.</returns>
        private string Save(string savePath, string oldFileName, ref int state)
        {
            try
            {
                #region 判断是否已选择文件  如果没选择返回旧图片名
                //_inputFileValue为空   表示没有选择文件   返回状态1
                if (this._HPFile.ContentLength==0)
                {
                    //设置状态为没有选择图片
                    state = 1;
                    //返回旧图片名
                    return oldFileName;
                }
                #endregion
                #region 检查目录是否存在
                DirectoryInfo dir = new DirectoryInfo(this.Path   savePath   "/"   this.BigChildPath);
                //判断大图存放目录是否存在   不存在则创建
                if (!dir.Exists) { dir.Create(); }
                if (this.SmallPic)
                {
                    dir = new DirectoryInfo(this.Path   savePath   "/"   this.SmallChildPath);
                    //判断小图存放目录是否存在   不存在则创建
                    if (!dir.Exists) { dir.Create(); }
                }
                #endregion
                #region 开始上传
                string extension = System.IO.Path.GetExtension(this._HPFile.FileName).ToLower();
                //存放文件路径 文件名
                string filePath = string.Format("{0}{1}/{2}/{3}{4}", this.Path, savePath, this.BigChildPath, this.NewFileName, extension);
                //判断是否需要水印
                if (IsWaterMark)
                {
                    string tempPath = string.Format("{0}/temp/{1}{2}", this.Path, this.NewFileName, extension);
                    dir = new DirectoryInfo(string.Format("{0}/temp", this.Path));
                    //判断是否存在temp临时目录,如果不存在则创建
                    if (!dir.Exists) { dir.Create(); }
                    if (this._HPFile != null) { this._HPFile.SaveAs(tempPath); }
                    //开始上传文件
                    this.addWaterMark(tempPath, filePath);
                }
                else
                {
                    //开始上传文件
                    if (this._HPFile != null) { this._HPFile.SaveAs(filePath); }
                }
                #region 上传小图
                if (SmallPic)
                {
                    string newFilePath = string.Format("{0}{1}/{2}/{3}{4}", this.Path, savePath, this.SmallChildPath, this.NewFileName, extension);
                    this.GreateMiniImage(filePath, newFilePath, this.MaxWith, this.MaxHeight);
                }
                #endregion
                #endregion
                #region 删除图片
                if (oldFileName.Trim() != string.Empty)
                {
                    this.Delete(savePath, oldFileName, true);
                }
                #endregion
                //设置状态为0,表示上传成功
                state = 0;
                //返回文件名
                return string.Format("{0}{1}", this.NewFileName, extension);
            }
            catch
            {
                //发生严重错误,设置状态为-1,返回旧文件名
                state = -1;
                return oldFileName;
            }
        }

        #endregion
        #region 删除文件
        /// <summary>
        /// 删除指定文件
        /// </summary>
        /// <param name="savePath">文件夹名</param>
        /// <param name="fileName">文件名</param>
        /// <param name="delSmallPic">是否删除小图</param>
        public string Delete(string savePath, string fileName, bool delSmallPic)
        {
            //删除状态
            string msg = string.Empty;
            string folder = savePath;
            folder = folder == null ? "other" : folder;//没有找到则默认为other文件夹
            string delPath = string.Format("{0}/{1}", folder, this.BigChildPath);
            msg=this.Del(delPath, fileName);
            if (delSmallPic)
            {
                delPath = string.Format("{0}/{1}", folder, this.SmallChildPath);
                this.Del(delPath, fileName);//删除小图(删除小图时不记录状态)
            }
            return msg;
        }
        private int deleteCount = 0;
        /// <summary>
        /// 删除核心代码
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private string Del(string folder, string fileName)
        {
            string msg = "文件不存在!";
            fileName = this.ClearFileFolder(fileName);
            string delPath = System.Web.HttpContext.Current.Server.MapPath("~/");
            string delPicPath = string.Empty;

            try
            {
                delPicPath = string.Format("{0}/{1}/{2}", delPath, folder, fileName);
                if (File.Exists(delPicPath))//如果该文件存在,则删除
                {
                    deleteCount  ;
                    File.Delete(delPicPath);
                    msg = "删除成功!";
                }
            }
            catch
            {
                if (deleteCount < 100)//为避免因资源被占用删除不了数据   所以在此循环100次
                {
                    msg = "删除失败,请与站长联系!";
                    Del(folder, fileName);
                }
            }
            return msg;
        }
        #endregion
        #region 其它
        /// <summary>
        /// 删除指定文件夹中所有文件
        /// </summary>
        /// <param name="directoryPath"></param>
        public void DeleteByDirectory(string directoryPath)
        {
            if (Directory.Exists(directoryPath))
            {
                DirectoryInfo dir = Directory.CreateDirectory(directoryPath);
                foreach (FileInfo fileInfo in dir.GetFiles())
                {
                    fileInfo.Delete();
                }
                dir.Delete(false);
            }
        }
        /// <summary>
        /// 删除指定文件夹中所有文件
        /// </summary>
        /// <param name="savePath"></param>
        public void DeleteByDirectory(string savePath, string directoryPath)
        {
            string folder = savePath;
            directoryPath = string.Format("{0}/{1}/{2}", this.Path, folder, directoryPath);
            if (Directory.Exists(directoryPath))
            {
                DirectoryInfo dir = Directory.CreateDirectory(directoryPath);
                foreach (FileInfo fileInfo in dir.GetFiles())
                {
                    fileInfo.Delete();
                }
                dir.Delete(false);
            }
        }
        #endregion
        #region 添加水印
        /// <summary>
        /// 添加图片水印
        /// </summary>
        /// <param name="oldpath">原图片绝对地址</param>
        /// <param name="newpath">新图片放置的绝对地址</param>
        private void addWaterMark(string oldpath, string newpath)
        {
            try
            {
                System.Drawing.Image image = System.Drawing.Image.FromFile(oldpath);
                Bitmap b = new Bitmap(image.Width, image.Height, PixelFormat.Format24bppRgb);
                Graphics g = Graphics.FromImage(b);
                g.Clear(Color.White);
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.InterpolationMode = InterpolationMode.High;

                g.DrawImage(image, 0, 0, image.Width, image.Height);

                if (IsWaterMark)
                {
                    switch (this.WMType)
                    {

                        case SWFWaterMarkType.WM_IMAGE: //水印图片
                            this.addWatermarkImage(g, _waterMarkImgPath, WMLocation, image.Width, image.Height);
                            break;

                        case SWFWaterMarkType.WM_TEXT://水印文字
                            this.addWatermarkText(g, this.WaterMarkText, WMLocation, image.Width, image.Height);
                            break;
                    }

                    #region 降低图片质量
                    System.Drawing.Imaging.ImageCodecInfo encoder = GetEncoderInfo("image/jpeg");
                    System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters(1);
                    encoderParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)80);
                    #endregion
                    b.Save(newpath, encoder, encoderParams);
                    encoderParams.Dispose();
                    b.Dispose();
                    image.Dispose();
                }
            }
            catch
            {
                if (File.Exists(oldpath))
                {
                    File.Delete(oldpath);
                }
            }
            finally
            {
                if (File.Exists(oldpath))
                {
                    File.Delete(oldpath);
                }
            }
        }

        /// <summary>
        ///  加水印图片
        /// </summary>
        /// <param name="picture">imge 对象</param>
        /// <param name="WaterMarkPicPath">水印图片的地址</param>
        /// <param name="_watermarkPosition">水印位置</param>
        /// <param name="_width">被加水印图片的宽</param>
        /// <param name="_height">被加水印图片的高</param>
        private void addWatermarkImage(Graphics picture, string WaterMarkPicPath, SWFWaterMarkLocation location, int _width, int _height)
        {
            Image watermark = new Bitmap(WaterMarkPicPath);

            ImageAttributes imageAttributes = new ImageAttributes();
            ColorMap colorMap = new ColorMap();

            colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
            colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);
            ColorMap[] remapTable = { colorMap };

            imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);

            float[][] colorMatrixElements = {
                                                 new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},
                                                 new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},
                                                 new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},
                                                 new float[] {0.0f,  0.0f,  0.0f,  0.3f, 0.0f},
                                                 new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}
                                             };

            ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

            //设置透明色
            //imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

            int xpos = 0;
            int ypos = 0;
            int WatermarkWidth = 0;
            int WatermarkHeight = 0;
            double bl = 1d;
            //计算水印图片的比率
            //取背景的1/4宽度来比较
            if ((_width > watermark.Width * 4) && (_height > watermark.Height * 4))
            {
                bl = 1;
            }
            else if ((_width > watermark.Width * 4) && (_height < watermark.Height * 4))
            {
                bl = Convert.ToDouble(_height / 4) / Convert.ToDouble(watermark.Height);

            }
            else

                if ((_width < watermark.Width * 4) && (_height > watermark.Height * 4))
                {
                    bl = Convert.ToDouble(_width / 4) / Convert.ToDouble(watermark.Width);
                }
                else
                {
                    if ((_width * watermark.Height) > (_height * watermark.Width))
                    {
                        bl = Convert.ToDouble(_height / 4) / Convert.ToDouble(watermark.Height);

                    }
                    else
                    {
                        bl = Convert.ToDouble(_width / 4) / Convert.ToDouble(watermark.Width);

                    }

                }
            WatermarkWidth = Convert.ToInt32(watermark.Width * bl);
            WatermarkHeight = Convert.ToInt32(watermark.Height * bl);
            switch (location)
            {
                case SWFWaterMarkLocation.WM_TOP_LEFT:
                    xpos = 10;
                    ypos = 10;
                    break;
                case SWFWaterMarkLocation.WM_TOP_RIGHT:
                    xpos = _width - WatermarkWidth - 10;
                    ypos = 10;
                    break;
                case SWFWaterMarkLocation.WM_BOTTOM_RIGHT:
                    xpos = _width - WatermarkWidth - 10;
                    ypos = _height - WatermarkHeight - 10;
                    break;
                case SWFWaterMarkLocation.WM_BOTTOM_LEFT:
                    xpos = 10;
                    ypos = _height - WatermarkHeight - 10;
                    break;
            }

            picture.DrawImage(watermark, new Rectangle(xpos, ypos, WatermarkWidth, WatermarkHeight), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel, imageAttributes);


            watermark.Dispose();
            imageAttributes.Dispose();
        }
        /// <summary>
        ///  加水印文字
        /// </summary>
        /// <param name="picture">imge 对象</param>
        /// <param name="_watermarkText">水印文字内容</param>
        /// <param name="_watermarkPosition">水印位置</param>
        /// <param name="_width">被加水印图片的宽</param>
        /// <param name="_height">被加水印图片的高</param>
        private void addWatermarkText(Graphics picture, string _watermarkText, SWFWaterMarkLocation location, int _width, int _height)
        {
            int[] sizes = new int[] { 16, 14, 12, 10, 8, 6, 4 };
            Font crFont = null;
            SizeF crSize = new SizeF();
            for (int i = 0; i < 7; i  )
            {
                crFont = new Font("arial", sizes[i], FontStyle.Bold);
                crSize = picture.MeasureString(_watermarkText, crFont);

                if ((ushort)crSize.Width < (ushort)_width)
                    break;
            }
            float xpos = 0;
            float ypos = 0;
            switch (location)
            {
                case SWFWaterMarkLocation.WM_TOP_LEFT:
                    xpos = ((float)_width * (float).01)   (crSize.Width / 2);
                    ypos = (float)_height * (float).01;
                    break;
                case SWFWaterMarkLocation.WM_TOP_RIGHT:
                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);
                    ypos = (float)_height * (float).01;
                    break;
                case SWFWaterMarkLocation.WM_BOTTOM_RIGHT:
                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);
                    ypos = ((float)_height * (float).99) - crSize.Height;
                    break;
                case SWFWaterMarkLocation.WM_BOTTOM_LEFT:
                    xpos = ((float)_width * (float).01)   (crSize.Width / 2);
                    ypos = ((float)_height * (float).99) - crSize.Height;
                    break;
            }

            StringFormat StrFormat = new StringFormat();
            StrFormat.Alignment = StringAlignment.Center;

            SolidBrush semiTransBrush2 = new SolidBrush(Color.FromArgb(153, 0, 0, 0));
            picture.DrawString(_watermarkText, crFont, semiTransBrush2, xpos   1, ypos   1, StrFormat);

            SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(153, 255, 255, 255));
            picture.DrawString(_watermarkText, crFont, semiTransBrush, xpos, ypos, StrFormat);

            semiTransBrush2.Dispose();
            semiTransBrush.Dispose();
        }
        /// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="oldpath">原图片地址</param>
        /// <param name="newpath">新图片地址</param>
        /// <param name="tWidth">缩略图的宽</param>
        /// <param name="tHeight">缩略图的高</param>
        private void GreateMiniImage(string oldpath, string newpath, int tWidth, int tHeight)
        {
            try
            {
                System.Drawing.Image image = System.Drawing.Image.FromFile(oldpath);
                #region 原有代码(图片尺寸等比缩放)
                //double bl = 1d;
                //if ((image.Width <= image.Height) && (tWidth >= tHeight))
                //{
                //    bl = Convert.ToDouble(image.Height) / Convert.ToDouble(tHeight);
                //}
                //else if ((image.Width > image.Height) && (tWidth < tHeight))
                //{
                //    bl = Convert.ToDouble(image.Width) / Convert.ToDouble(tWidth);
                //}
                //else
                //    if ((image.Width <= image.Height) && (tWidth <= tHeight))
                //    {
                //        if (image.Height / tHeight >= image.Width / tWidth)
                //        {
                //            bl = Convert.ToDouble(image.Width) / Convert.ToDouble(tWidth);
                //        }
                //        else
                //        {
                //            bl = Convert.ToDouble(image.Height) / Convert.ToDouble(tHeight);
                //        }
                //    }
                //    else
                //    {
                //        if (image.Height / tHeight >= image.Width / tWidth)
                //        {
                //            bl = Convert.ToDouble(image.Height) / Convert.ToDouble(tHeight);
                //        }
                //        else
                //        {
                //            bl = Convert.ToDouble(image.Width) / Convert.ToDouble(tWidth);
                //        }
                //    }
                //Bitmap b = new Bitmap(image, Convert.ToInt32(image.Width / bl), Convert.ToInt32(image.Height / bl));
                #endregion
                #region 2010-03-29 改造
                int imgWidth = image.Width;
                int imgHeight = image.Height;
                int newWidth = 0;
                int newHeight = 0;
                if (imgWidth > tWidth)
                {
                    newWidth = tWidth;
                    newHeight = tWidth * imgHeight / imgWidth;
                    if (newHeight > tHeight)
                    {
                        newWidth = tHeight * newWidth / newHeight;
                        newHeight = tHeight;
                    }
                }
                else if (imgHeight > tHeight)
                {
                    newHeight = tHeight;
                    newWidth = tHeight * imgWidth / imgHeight;
                    if (newWidth > tWidth)
                    {
                        newHeight = tWidth * newHeight / newWidth;
                        newWidth = tWidth;
                    }
                }
                else
                {
                    newWidth = imgWidth;
                    newHeight = imgHeight;
                }
                Bitmap b = new Bitmap(image, newWidth, newHeight);
                #endregion
                b.Save(newpath);
                b.Dispose();
                image.Dispose();
            }
            catch
            {
            }
        }
        #endregion
        public static string GetSmallPicName(string picName)
        {
            return SWFWebConfigManage.GetByAppSettingsKey("WaterMarkPath")   picName;//5~1-a-s-p-x
        }
    }
}

标签: 上传

实例下载地址

asp.net SwfUpload 上传实例完整源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警