我本来准备把word文件插入到数据库,现在看来好像不行,只好舍而求其次,把文件的路径插入到数据库,可是刚刚测试发现type="file",如果用request.getParameter(file),获取到的是null,
请问各位高手,怎么获取type="file"怎么获取里面的值啊?这个路径我准备存到数据库,这样打开的时候就方便了

解决方案 »

  1.   

    <input type="file" name="file" />
      

  2.   

    分解HTTP头文件流信息,把文件路径分解出来表单默认以enctype="application/x-www--form-urlencoded"   编码参数,通过GET,或POST将表单域中的input表单项的值附加到浏览器头或请求体中,发送到WEB服务器,然后WEB服务器可以直接从后台程序中获取请求,即   request.getParameter()   得到结果。   
        
      如果表单以   enctype="multipart/form-data”编码参数,则通过POST发送后,参数不能通过request.getParameter获得,只能从请求流中获取,即   request.getInputStream()   
      直接把流中的内容写成文件,其实根本不是原来的文件,用文本编辑器打开就可以看到原因:   
      ==================================================================   
      -----------------------------7d41412a102aa   
        
      Content-Disposition:   form-data;   name="t1"   
        
        
        
      test   
        
      -----------------------------7d41412a102aa   
        
      Content-Disposition:   form-data;   name="file";   filename="C:\Documents   and   Settings\NetSniffer\My   Documents\My   Pictures\4139defd-4082403.jpg"   
        
      Content-Type:   image/pjpeg   
        
        
      ...二进制信息体....   
        
      -----------------------------7d41412a102aa   
        
      Content-Disposition:   form-data;   name="Submit"   
        
        
        
      提交   
        
      -----------------------------7d41412a102aa--   
        
      可以看出每段信息体都是以-----------------------------7d41412a102aa   隔开,要生成二进制的图片只能从流中获取中间的[二进制信息体],然后将此段信息写成文件即为原始文件体,SmartUpload也正是剖析multipart/form-data这种编码生成的请求流格式,分段取,当段中含有   【filename="】这样的字段时,就开始一个二级制文件的读取,从此位置读到分隔符,取出二进制信息体,然后保存。