zoukankan      html  css  js  c++  java
  • 通过一般处理程序实现【文件上传】

    注意事项:
    1>表单的提交方式必须为post,method="post";//由于http上面的数据大小有限,所以不支持使用get显示到上面。
    2>必须修改表中提交数据时的数据组织方式
    enctype="application/x-www-form-urlencoded"//默认方式 数据是以键值对的方式组织提交的
    enctype="multipart/form-data"//需要改为这种方式 这种方式是以为分隔符的方式来进行提交的。
    3>表单中需要有一个文件域。及<input type="file" name="fileData"/>
    --->
    客户端-html文件代码:
    <form action="Uploadashx.ashx" method="post" enctype="multipart/form-data">
    <input type="file" name="fileData" /><br />
    <input type="submit" value="提交"/>
    </form>

    服务器--一般处理程序代码:
    //服务器处理上传过来的文件
    //首先判断文件域是否有文件
    if (context.Request.Files.Count > 0)
    {
    //获得第一个文件
    HttpPostedFile file = context.Request.Files[0];
    //判断里面的内容是否为null
    if (file.ContentLength > 0)
    {
    //将上传过来的内容保存到一个文件夹
    string str1 = Path.GetFileName(file.FileName);
    file.SaveAs(context.Request.MapPath("Files/"+str1));
    //根据相对路径获取绝对路径,并追加文件名开始保存
    }

    }
    <<--
    上传文件需要注意的问题:
    1.【解决文件重名问题
    可以通过Guid生成一个序列号(没重复的),然后+文件名拼接成一个新的文件名,然后保存,这样就可以避免重名发生覆盖现象。
    string new_FIleName = Guid.NewGuid().ToString() + "_" + file.FileName;
    2.【解决文件过多存储问题
    可以通过目录分离算法来保证将不同的图片保存在不同的目录下。
    --------------------------------------------------------<<
    string new_FIleName = Guid.NewGuid().ToString() + "_" + file.FileName;
    //获得哈希码
    int hash_Code = new_FIleName.GetHashCode();
    //获得第一层目录
    int dir1 = hash_Code & 0xf;
    hash_Code = hash_Code >> 4;//向右移动四位得到第二层目录
    int dir2 = hash_Code & 0xf;
    hash_Code = hash_Code >> 4;//再向右移动四位得到第三层目录
    int dir3 = hash_Code & 0xf;
    //拼接路径
    string strPath = Path.Combine(context.Request.MapPath("filePath/"),dir1.ToString(),dir2.ToString(),dir3.ToString());
    //判断路径是否存在
    if (!Directory.Exists(strPath))
    {
    //如果不存在则创建文件
    Directory.CreateDirectory(strPath);
    }
    //拼接路径+文件名
    strPath = Path.Combine(strPath, new_FIleName);
    //开始保存
    file.SaveAs(strPath);
    context.Response.Write("上传成功~");
    3.【不允许用户上传exe文件,所以要先判断用户上传的内容是否合法
    -->>在服务器进行校验
    string ext=Path.GetExtension(file.FileName);//首先获得扩展名 if((ext==".jpg"||ext==".png"||ext==".gif")&&file.ContentType.ToLower().StartsWith("image"))
    {
    context.Response.Write("文件上传成功~");
    }else{
    context.Response.Write("非法的文件!");
    }
    -->>在客户端用js进行校验
    //在客户端校验用户上传的文件是否合法
    document.getElementById("btnClick").onclick = function () {
    //1.获取用户选择文件的名称
    var getFile = document.getElementById("fileData").value();
    //2.获取后缀
    var ext = getFile.substring(getFile.lastIndexOf('.'));
    //3.校验
    if(ext==".jpg"||ext==".png"||ext==".gif")&&file.ContentType.ToLower().StartsWith("image"))
    {
    return true;
    }else{
    return false;
    }
    };

  • 相关阅读:
    Cocos2d-js官方完整项目教程翻译:六、添加Chipmunk物理引擎在我们的游戏世界里
    linux coreseek-4.1安装
    8个必备的PHP功能开发
    LINUX 下mysql导出数据、表结构
    PHP缩略图类
    PHP文件上传类
    PHP抓取页面的几种方式
    MySQL性能优化的最佳20+条经验
    zend studio9.0.3破解及汉化 windons版
    【转载】【面试经验】PHP中级面试题
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/5536840.html
Copyright © 2011-2022 走看看