zoukankan      html  css  js  c++  java
  • 图片 音频 视频上传

    上传文件使用ashx来处理,该部分代码可以处理任何上传的文件保存到制定文件夹

    int LocationID = 0;//图片关联外键
            string description = null;//图片描述
            int success = 1;
            public void ProcessRequest(HttpContext context)
            {
    
                context.Response.ContentType = "text/plain";
                context.Response.Charset = "UTF-8";
                HttpFileCollection uploadedFiles = context.Request.Files;
    
                Loger.Debug("用户进入接口");
                try
                {
                    if (context.Request["locationid"] != null)
                    {
                        LocationID = Convert.ToInt32(context.Request["locationid"]);
                    }
                    if (context.Request["description"] != null)
                    {
                        description = Convert.ToString(context.Request["description"]);
                    }
                    Loger.Debug(string.Format("用户上传参数:LocationID :{0},description :{1}", LocationID, description));
                    for (int j = 0; j < uploadedFiles.Count; j++)
                    {
                        HttpPostedFile F1 = uploadedFiles[j];
    
                        Loger.Debug(string.Format("用户上传附件数量:{0}", F1.ContentLength));
                        if (uploadedFiles[j] != null && F1.ContentLength > 0)
                        {
                            string filepath = DateTime.Now.ToString("yyyyMMdd");
                            //是服务器绝对路径 列如C:InetpubwwwrootDamangeWebService
                            string path = ConfigurationSettings.AppSettings["Img"].ToString() + "/" + filepath + "/";
                            Loger.Debug(string.Format("图片上传路径是:{0}", path));
    
                            CommonFunc.FolderCreate(path);
    
                            for (int i = 0; i < uploadedFiles.Count; i++)
                            {
                                HttpPostedFile F = uploadedFiles[i];
    
                                if (uploadedFiles[i] != null && F.ContentLength > 0)
                                {
                                    //得到上传文件的长度
                                    int upFileLength = F.ContentLength;
                                    //Loger.Debug("upFileLength==>" + upFileLength);
                                    //得到上传文件的客户端MIME类型
                                    string contentType = F.ContentType;
                                    byte[] FileArray = new Byte[upFileLength];
                                    Stream fileStream = F.InputStream;
                                    fileStream.Read(FileArray, 0, upFileLength);
                                    int index = F.FileName.LastIndexOf('.');
                                    string filename = F.FileName.Replace(F.FileName.Substring(0, index), Guid.NewGuid().ToString());
    
                                    string pathUrl = path + filename;
                                    F.SaveAs(pathUrl);
                                    Loger.Debug(string.Format("图片最终保存路径是:{0}", pathUrl));
                                  
                                    success = SaveimageToBase(F.ContentLength, pathUrl, F.InputStream);
                                }
                            }
    
                        }
                    }
                }
                catch (Exception ex)
                {
                    success = 0;
                    Loger.Debug(string.Format("异常原因:{0}", ex.ToString()));
                }
                finally
                {
                    HttpContext.Current.ApplicationInstance.CompleteRequest();
                    Loger.Debug("success状态===》" + success);
                    context.Response.Write(success);
                    context.Response.Flush();
                    context.Response.End();
                }
    View Code

    由于上传的是图片,直接保存 到文件夹里面。当然也可以顺便把压缩过的图片保存到数据库

     /// <summary>
            /// 保存图片到数据库
            /// </summary>
            /// <param name="length">图片大小</param>
            /// <param name="fileName">名称</param>
            /// <param name="stream">图片文件流</param>
            /// <returns></returns>
            private int SaveimageToBase(double length, string fileName, Stream stream)
            {
    
                int success = 1;
                System.Drawing.Image original_image = null;
                System.Drawing.Bitmap final_image = null;
                System.Drawing.Graphics graphic = null;
                original_image = System.Drawing.Image.FromStream(stream);
                int width = original_image.Width;
                int height = original_image.Height;
                int target_width = 400;
                int target_height = 300;
                int new_width, new_height;
                try
                {
                    float target_ratio = (float)target_width / (float)target_height;
                    float image_ratio = (float)width / (float)height;
    
                    if (target_ratio > image_ratio)
                    {
                        new_height = target_height;
                        new_width = (int)Math.Floor(image_ratio * (float)target_height);
                    }
                    else
                    {
                        new_height = (int)Math.Floor((float)target_width / image_ratio);
                        new_width = target_width;
                    }
    
                    new_width = new_width > target_width ? target_width : new_width;
                    new_height = new_height > target_height ? target_height : new_height;
    
                    final_image = new System.Drawing.Bitmap(target_width, target_height);
                    graphic = System.Drawing.Graphics.FromImage(final_image);
                    graphic.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.Black), new System.Drawing.Rectangle(0, 0, target_width, target_height));
                    int paste_x = (target_width - new_width) / 2;
                    int paste_y = (target_height - new_height) / 2;
                    graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    
                    graphic.DrawImage(original_image, paste_x, paste_y, new_width, new_height);
                    MemoryStream ms = new MemoryStream();
                    final_image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    // DisasterImageSound 这个是保存图片的对象
                    DisasterImageSound Model = new DisasterImageSound();
                    Model.Data = ms.GetBuffer();
                    Model.LocationID = Convert.ToInt32(LocationID);
                    Model.FileSize = length;
                    Model.ContentType = fileName;
                    Model.Description = description;
                    new BLL.DisasterImageSound().Add(Model);
                }
                catch (Exception ex)
                {
                    success = 0;
                    Loger.Debug(string.Format("SaveimageToBase异常.异常愿意:{0}", ex.ToString()));
                }
                return success;
            }
    View Code

    调用ashx 方法 url可以添加各种参数。同理可以在ashx可以获取到 ,url 是ashx部署的地址,Server.MapPath("TMp/" + filename) 这个是文件

      string url = ConfigurationSettings.AppSettings["ImgUrl"].ToString();
                        System.Net.WebClient myWebClient = new System.Net.WebClient();
                        myWebClient.UploadFile(url, "POST", Server.MapPath("TMp/" + filename)); 
  • 相关阅读:
    斐波那契额数列
    Handler+Looper+MessageQueue深入详解
    Android中常见的设计模式
    Java的序列化与反序列化
    Fragment的生命周期(与Activity的对比)
    两步搞定Activity的向右滑动返回的功能
    BOM和DOM的联系和区别
    JavaScript 之 使用 XMLHttpRequest 预览文件(图片)
    JavaScript 之 使用 XMLHttpRequest 上传文件
    JavaScript 客户端JavaScript之脚本化HTTP(通过XMLHttpRequest)
  • 原文地址:https://www.cnblogs.com/qishiguilai/p/3183699.html
Copyright © 2011-2022 走看看