首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net mvc中下传图片立即显示如何弄

2013-02-05 
asp.net mvc中上传图片立即显示怎么弄啊在网上找了一个,可是根本就没有反应,不知道哪儿出错了,泪奔了,求教

asp.net mvc中上传图片立即显示怎么弄啊
在网上找了一个,可是根本就没有反应,不知道哪儿出错了,泪奔了,求教
UploadFile.ashx.cs 是在Controllers下的类


<script  type="text/javascript">
        //图片预览
 $("#imgfile").uploadPreview(
        {
            imgDiv: "#imgDiv",
            imgType: ["bmp", "gif", "png", "jpg"],
            maxwidth: 250,
            maxheight: 250
        });

   //上传图片
        $("#btnUpload").click(function() {
            $.post("Controllers/UploadFile.ashx", { upfile: getPath($("#imgfile")) }, function (json) {

               //json.result为upload.ashx文件返回的值
                alert(json.result);
            },"json");
        });

    });
</script>

[code=HTML]
     <input id="imgfile" type="file" />
            <input type="button" id="btnUpload" value="上传图片" />
            <div id="imgDiv" runat="server"></div> //显示预览图片


[/code]



 [WebService(Namespace = "http://tempuri.org/")]
     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class UploadFile : IHttpHandler
    {
        /// <summary>
        /// 您将需要在您网站的 web.config 文件中配置此处理程序,
        /// 并向 IIS 注册此处理程序,然后才能进行使用。有关详细信息,
        /// 请参见下面的链接: http://go.microsoft.com/?linkid=8101007
        /// </summary>
        #region IHttpHandler Members
      public void ProcessRequest(HttpContext context)
        {
            //在此写入您的处理程序实现。
            //源图片路径
            string _fileNamePath = "";
            try
            {
                _fileNamePath = context.Request["upfile"].ToString();
                string _savedFileResult = uploadFile(_fileNamePath); //开始上传
                //把编译成的json格式返回到前台


                context.Response.Write(uploadFileResult(_savedFileResult));

            }
            catch
            {

            }

        }

        private string uploadFile(string filenamePath)
        {
            //图片格式
            string fileNameExit = filenamePath.Substring(filenamePath.IndexOf('.')).ToLower();
            if (!checkfileExit(fileNameExit))
            {
                return "图片格式不正确";
            }
            //保存路径
            string toFilePath = "../Content/UploadFiles/";
            //物理完整路径
            string toFileFullPath = HttpContext.Current.Server.MapPath(toFilePath);
            //检查是否有该路径,没有就创建
            if (!Directory.Exists(toFileFullPath))
            {
                Directory.CreateDirectory(toFileFullPath);
            }
            //生成将要保存的随机文件名
            string toFileName = getFileName();

            //将要保存的完整路径
            string saveFile = toFileFullPath + toFileName + fileNameExit;

            //创建WebClient实例
            WebClient myWebClient = new WebClient();
            //设定window网络安全认证
            /*Credentials 属性包含的身份验证凭据用于访问主机上的资源。
             * 在多数客户端方案中,应使用 DefaultCredentials,这是当前登录的用户的凭据。
             * 为此,将 UseDefaultCredentials 属性设置为 true,而不是设置此属性。
             * */
            myWebClient.Credentials = CredentialCache.DefaultCredentials;

            //要上传的文件
            FileStream fs = new FileStream(filenamePath, FileMode.Open, FileAccess.Read);



            BinaryReader br = new BinaryReader(fs);
            //使用UploadFile方法可以用下面的格式
            //将本地文件发送到资源,并返回包含任何响应的 Byte 数组。
            myWebClient.UploadFile(saveFile, filenamePath);
            return "图片保存成功";
        }
        //把返回值编译成json格式
        public string uploadFileResult(string result)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter sw = new StringWriter(sb);
            using (JsonWriter jswriter = new JsonTextWriter(sw))
            {
                jswriter.Formatting = Formatting.Indented;
                jswriter.WriteStartObject();
                jswriter.WritePropertyName("result");
                jswriter.WriteValue(result);
                jswriter.WriteEnd();
            }
            return sb.ToString();
        }


        /// <summary>
        /// 检查图片格式
        /// </summary>
        /// <param name="_fileExit">文件后缀名</param>
        /// <returns></returns>
        private bool checkfileExit(string _fileExit)
        {
            string[] allowExit = new string[] { ".gif", ".jpg", ".png" };//判断文件类型
            for (int i = 0; i < allowExit.Length; i++)
            {
                if (allowExit[i] == _fileExit)
                {
                    //符合文件类型则返回true;
                    return true;
                }
            }


            return false;
        }
        /// <summary>
        /// 得到随机的文件名
        /// </summary>
        /// <returns></returns>
        public static string getFileName()
        {
            Random rd = new Random();
            StringBuilder serial = new StringBuilder();
            serial.Append(DateTime.Now.ToString("yyMMddHHmmssff"));
            serial.Append(rd.Next(0, 9999).ToString());
            return serial.ToString();
        }
        public bool IsReusable
        {
            // 如果无法为其他请求重用托管处理程序,则返回 false。
            // 如果按请求保留某些状态信息,则通常这将为 false。
            get
            {
                return false;
            }
        }

        #endregion
    }


[解决办法]
图片上传

热点排行