`
liuwei1981
  • 浏览: 771866 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161204
社区版块
存档分类
最新评论

js无法实现上传文件控制文件大小以及文件类型功能

阅读更多

       最近在做一套网站,网站允许注册的用户上传自己的一些产品图片和资料(网站的注册用户类型是一个信用协会的企业会员),考虑到用户的数量不小,需要控制上传的文件的类型(主要为图片)和大小(暂定为200k)。

      最初的思路是使用js脚本实现这个功能,在搜索控制上传文件大小js功能代码后才郁闷的发现,代码是惊人的一致,全部为:

js 代码
function   CheckFileSize()     
  {     
      var   s   =   document.Myform.photo.value;     
      if(s==" ")return   false;     
      var   img   =   new   Image();     
      img.src   =   s;     
      alert("高   =   "+   img.height   +   "\n宽   =   "+   img.width);     
      alert("fileSize   =   "+   img.fileSize   +"   字节");     
      return   false;     
  }     

      

js 代码
function   CheckFileSize()     
  {     
     var FileMaxSize = 100;//限制上传的文件大小,单位(k)  
      var   s   =   document.RegForm.Img_1.value;    
      //if(s==""){alert("No image,please select again!");document.RegForm.Img_1.focus(); return   false;}     
      var   img   =   new   Image();     
      img.src   =   s;   
     if(img.fileSize>FileMaxSize*1024){alert("The file size exceeds "+FileMaxSize+"K,please choose a smaller one!");document.RegForm.Img_1.focus();return false;}  
  //--></SCRIPT>   
  

      还找到了一个判断上传文件为图片类型的代码,很简单,当file表单对象值变化后,利用onchange事件,将选择的文件装载到一个不显示的图片对象中,图片对象中有两个方法:onload()和onerror(),图片对象会自动判断装载的对象是否正确。 

 

     想到既然这个代码转载的数量这么大,应该没有什么问题,便将这部分代码整理了一下,最先是本地写了一个html页面,加入脚本进行测试,测试很顺利的通过了,但当把这部分代码转移到我的web程序里,立即失效了。

 

   我的web程序使用了webwork作为mvc框架,上传文件使用了smartupload的组件,在以前的一个脚本中,在上传文件后将上传到服务器的文件路径重新赋值到操作页面,img对象会重新装载这个图片并显示,加入这样的控制代码后并没有实现最初的控制功能。

 

   在选择上传文件后,代码的流程应该是加载入这个图片,加载的过程就是判断上传文件类型是否合法的问题,然后在提交上传的过程检测上传文件的大小。

 

   但测试失败,首先是选择上传文件后,img对象无法加载这个图片,上传控制代码输出的上传文件的大小为-1,很显然的是img对象没有加载,开始查找问题。

 

  将执行后的文件html源码复制到本地一个html页面,再次执行代码,代码执行成功。

 

  想到以前在上传文件后图片正常显示,明白在web程序中,img对象装载的路径是从web程序的根路径开始查找,现在使用脚本检测,img对象装载是从本地路径,但很明显的是,img对象无法识别这个路径,自然就无法装载,检测控制就更无从谈起了。

 

   本地页面识别上传路径正常,一旦在web程序中运行,这段js代码失效了,现在可以肯定是上传文件的路径问题。查找解决方法,js代码中img对象在装载路径如何识别浏览器端用户的路径,没有找到,上面的js代码样例最后这个帖子的作者都信誓旦旦的讲到,在自己的项目中都是这样的使用这段代码完成检测功能,没有问题,不知道他是怎样解决这个问题的,难道这段代码在iis的环境里正常?

 

   最后使用了smartload组件在上传过程中判断设置,设置上传文件的最大阀值,在测试过程中,一开始上传文件超过上限,页面显示异常,查看代码,原来组件在检测大小的过程中,超过最大值是以异常的形式抛出的,(以前还真没有好好看看这个类),捕捉这个异常,测试终于通过了。

 

   上面的这段js代码怎样才能在web程序里正常使用呢?我的js水平还在入门阶段,要明白还真不容易。

分享到:
评论
10 楼 liuwei1981 2008-08-26  
achun 写道
LZ是否是用框架习惯了,对原理并不十分清楚。
那建议楼主试试用纯手工的html+javascript来完成这个。
然后你就明白问题出在哪里了。


纯手工的html和js已经试验过了,至于原因已经有朋友在留言里解释过了
9 楼 achun 2008-08-25  
LZ是否是用框架习惯了,对原理并不十分清楚。
那建议楼主试试用纯手工的html+javascript来完成这个。
然后你就明白问题出在哪里了。
8 楼 冯冀川 2008-08-24  
InnocentBoy 写道
首先要明白页面上哪些东西是在客户端执行,哪些是服务器执行,我同事也遇到过这样的问题,在上传文件时直接用输入框输入文件的绝对路径,就是找不到文件。


上传文件的时候浏览器出于安全性考虑,不允许直接向type=file的input中写入数据,或者用JS插入/改变它的值,只能通过点击选择要上传的文件才有效
7 楼 冯冀川 2008-08-24  
用 new Image()也会存在浏览器的兼容性问题;

目前上传文件直接用JS好像无法判断大小,可以通过上传的时候,向后台获取数据来判断
6 楼 airballbibi 2008-08-24  
关于这个问题,在项目中也碰到过,不过用js在客户端判断文件大小的问题无法找到解决方案,最好的效果也是用Ajax方式实现后台文件大小的读取,但效果不一定好。最后还是用上传后,在服务器内存中判断图片大小。具体原因还望高手可以解释下,期待更好的解决方案。
5 楼 InnocentBoy 2007-11-09  
文件的类型还是可以判断的,因为有文件名的。大小可以在上传的过程中,在服务器的内存中进行判断。
4 楼 liuwei1981 2007-11-05  
如果在jsp中目录是相对于服务器的目录,那么使用js在文件上传到服务器之前进行类型和大小的测试就是不可能的了,只能在上传到服务器时候进行测试,那么我提到的那个js脚本测试怎么还是很多人说是在项目中能够正常使用呢?晕啊
3 楼 InnocentBoy 2007-11-05  
liuwei1981 写道
上传文件使用了file表单对象。
不明白img对象装载方式,本地页面可以装载要上传的图片,在web程序中,img对象所在的页面所在的web程序文件夹就是img的唯一获取图片文件的路径么?

html测试可以是本地图片,但是到了jsp中就要有服务器的上执行的概念,它的目录是相对于服务器的目录。最好的方式是相对于服务的相对路径。
2 楼 liuwei1981 2007-11-05  
上传文件使用了file表单对象。
不明白img对象装载方式,本地页面可以装载要上传的图片,在web程序中,img对象所在的页面所在的web程序文件夹就是img的唯一获取图片文件的路径么?
1 楼 InnocentBoy 2007-11-05  
首先要明白页面上哪些东西是在客户端执行,哪些是服务器执行,我同事也遇到过这样的问题,在上传文件时直接用输入框输入文件的绝对路径,就是找不到文件。

相关推荐

    javascript控制上传文件的大小及文件类型

    为了确保用户体验并减轻服务器负担,通常需要对上传文件进行预检查,包括文件大小限制以及文件类型的验证。下面将详细介绍如何使用JavaScript来实现这一功能。 #### 文件大小限制 对于文件大小的限制,可以采用...

    JS 实现文件上传功能

    例如,可以使用`multiple`属性支持多文件选择,使用FileReader API预览图片文件,通过`accept`属性限制文件类型,以及通过`size`属性检查文件大小。 总的来说,使用JavaScript和jQuery实现文件上传功能,不仅可以...

    原生JS上传文件,获取文件二进制数据及文件大小和文件名称

    本知识点将深入探讨如何使用原生JavaScript实现文件上传,获取文件的二进制数据、大小以及文件名称。 首先,我们需要一个HTML元素,通常是`&lt;input type="file"&gt;`,用于让用户选择要上传的文件。例如: ```html ``...

    javascript 实现限制上传文件大小

    javascript 实现限制上传文件大小

    JS判断上传文件的大小类型等限制

    为了确保用户体验并防止服务器资源被滥用,前端通常需要对上传的文件进行一系列的验证,如文件大小、文件类型等。本文将详细介绍如何利用JavaScript(简称JS)来实现这些功能,并与Java Server Pages (JSP)结合使用...

    js控制上传文件的大小

    通过以上介绍,我们可以看到使用JavaScript来控制上传文件大小的方法有多种。其中,利用HTML5的File API是最为现代化且实用的方式。这种方法不仅能够有效地控制文件大小,还能提供良好的用户体验。开发者可以根据...

    js 上传文件校验文件类型和大小

    js 上传图片 校验 文件类型 大小js 上传图片 校验 文件类型 大小js 上传图片 校验 文件类型 大小 js 上传文件校验 js 上传文件校验 js 上传文件校验

    javascript实现限制上传文件大小

    本篇介绍一个前端JS便捷判断上传文件大小的方法。 这个是比较好的 &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt; [removed] var isIE = /msie/i.test...

    uniapp实现移动端上传文件功能

    在移动应用开发中,文件上传是一项常见的功能,尤其在社交、云存储以及各种服务类应用中,用户常常需要上传图片、文档等数据。uniAPP,作为一个跨端开发框架,为开发者提供了便捷的方式来实现移动端的文件上传功能。...

    jquery过滤上传文件的类型和限制文件的大小

    ### 使用jQuery过滤上传文件的类型和限制文件大小 在Web开发中,经常需要处理用户上传文件的功能。为了确保系统的安全性和提高用户体验,开发者通常需要对上传的文件进行一系列的检查,比如验证文件类型是否符合...

    js上传文件js 上传单个文件(任意大小)

    ### 如何控制上传文件大小 在JavaScript中,可以利用`File`对象的`size`属性来检查文件的大小,从而实现对上传文件大小的限制。例如,可以通过比较文件的实际大小与设定的最大值,决定是否允许上传: ```javascript...

    .NET webapi实现文件上传功能

    - 文件大小限制:默认情况下,ASP.NET对上传文件的大小有限制,需要在Web.config中调整`maxRequestLength`和`httpRuntime.maxRequestLength`参数。 - 安全性:确保对上传的文件进行验证,防止恶意文件上传,例如检查...

    js上传大文件,上传的文件大小不限

    本文将深入探讨如何利用JavaScript实现这样的功能,使上传的文件大小不受限,并提供进度条显示。 #### 关键技术点详解 ##### 1. 分块上传策略 由于浏览器和服务器之间的网络连接存在一定的限制,一次性上传大文件...

    移动端HTML5实现文件上传功能【附代码】

    本文将介绍如何使用HTML5、JavaScript以及Ajax技术在移动端实现一个简单的图片上传功能。以下是实现该功能所使用的技术和代码细节: ### 技术要点 1. **HTML5表单元素**:使用`&lt;input type="file"&gt;`元素让用户选择...

    asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)

    asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)

    JS上传文件大小验证.rar

    除了验证文件大小,还可以结合File API实现其他功能,如预览图片、显示文件类型图标、多文件上传等。 综上所述,JS上传文件大小验证是通过HTML5 File API实现的一种前端交互技术,它能够提高用户体验,减少无效的...

    实现各种类型文件的多文件上传

    在IT行业中,文件上传是Web应用中常见的功能之一,尤其在大数据时代,用户可能需要上传各种类型的文件,如文档、图片、音频、视频等。在本项目中,我们利用layui前端框架与SpringBoot后端技术栈,实现了多文件上传的...

    JS获取文件大小方法小结

    本文主要探讨了三种不同的JS方法来获取文件大小,这些方法主要适用于浏览器环境,尤其是Internet Explorer。 方法一:利用ActiveX控件 在较旧版本的IE浏览器中,可以使用ActiveX技术来访问本地文件系统。ActiveX...

    Ext3.0实现多文件上传.rar

    File API允许JavaScript访问和操作用户选择的本地文件,包括读取文件内容、获取文件信息(如大小、类型等)以及创建File对象。在Ext3.0中,这个API被用来处理用户选择的文件。 2. **FormData对象**: Ext3.0利用...

    jsp附件上传模块,JS实现文件上传功能

    Uploadify插件是由国外开发的一个jquery插件,功能非常的齐全,包括同时上传多个附件,支持多个附件同时上传,一次同步上传文件个数设置,单个文件上传大小限制,同时上传附件个数限制,支持上传附件格式等功能,...

Global site tag (gtag.js) - Google Analytics