`
Aim09
  • 浏览: 1687 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Jruby 文件上传报StringIndexOutOfBoundsException错误

阅读更多
jruby1.0出来了,经理就要求把以前做的一个项目部署在jruby上,转换过去后,什么都好好的,唯一有点问题的就是上传,如果是上传text文件,没有什么问题,但像rar,doc,jpg文件都不行,会报一个:#<NativeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -848>,而且出错的地方是 点submit后 到 doupload 这个动作之前发生的
  开始的时候,我认为是url把上传的内容加在url后进行上传的,但上传一个200k的text文件成功,而一个10k的doc不成功,所以不成立,另外一个想法就是,可能是编码的问题,可在text中写入中文,但没有什么影响,实在想不明白是什么回事,也搜索不到什么有效的信息,希望大家指点一下,下面附上部分代码
appication.rb
#编码设置
before_filter :configure_charsets
  after_filter :after
  
  def configure_charsets
    response.headers["Content-Type"] = "text/html; charset=utf-8"
    response.headers["Cache-Control"] = "no-cache"
    response.headers["Pragma"] = "no-cache"

    suppress(ActiveRecord::StatementInvalid) do
      ActiveRecord::Base.connection.execute 'SET NAMES utf8'
    end
    
  end


上传操作的action
class UploadController < ApplicationController
  
  IFRAMECTX = <<-html
  <style type="text/css">
  body {
	background-color:#D3DDE7;
	margin: 0px;
  }
  </style>
  <body>INFO</body>
  html
  
  IMAGE_TYPES = [ "image/jpg", "image/jpeg", "image/pjpeg", "image/gif","image/png" ]
  
  
  def init
    render_text IFRAMECTX.sub('INFO','')
  end 
  
  def doupload
    begin
      client_file = params[:file]
      if 'image' == params[:mime]
        ftype = client_file.content_type.strip
        if not IMAGE_TYPES.include?(ftype)
          render_text IFRAMECTX.sub('INFO','不支持该格式,上传失败(只支持jpg|gif|png格式的图片)')
          return
        end
      end
      if client_file.size > FILEUPLOAD_SIZE
        render_text IFRAMECTX.sub('INFO','上传文件过大,限定值为5M')
        return
      end
      server_file = RAILS_ROOT + FILEUPLOAD_TEMPDIR + session.session_id + File.extname(client_file.original_filename)  
      upload(client_file,server_file)
      render_text IFRAMECTX.sub('INFO','上传成功')
    rescue => e
      @errorNumber = 110 if @errorNumber.nil?
      render_text IFRAMECTX.sub('INFO','上传失败')
    end
  end
end


上传的rhtml
<iframe id="upload_result" name="upload_result"  frameborder="0" scrolling="no" height="35" width="600"></iframe></p>
<%= start_form_tag(  {:controller=>'/upload', :action=>'doupload'}, :multipart=>true, :target=>'upload_result'  )  %>  
<label for="file"><%= label%></label><br/><%= file_field_tag "file" %><% if defined? mime %><%= hidden_field_tag('mime',value=mime) %><% end %><%= submit_tag "上传" %>
<%= end_form_tag %>

<script>
$('upload_result').src='/upload/init'
</script>
分享到:
评论

相关推荐

    用JRuby读取Excel文件

    标题“用JRuby读取Excel文件”涉及到的主要技术点是JRuby和处理Excel文件,这里我们将深入探讨这两个关键概念。 JRuby是Java平台上的一个Ruby实现,它允许开发者使用Ruby语言编写程序,同时利用Java的类库和运行...

    jruby-complet-1.7.zip

    找不到或无法加载主类org.jruby.Main。 原因是/usr/local/hbase/lib 目录下没有jruby-complete-1.7.19.jar文件.,下载本文件,解压缩后将jar文件直接添加到/usr/local/hbase/lib 目录下。

    jruby_windows_1_6_4安装文件

    标题中的“jruby_windows_1_6_4安装文件”指的是JRuby的一个特定版本——1.6.4,特别针对Windows操作系统设计的安装包。 **JRuby的优势** 1. **跨平台兼容性**:JRuby利用Java虚拟机(JVM)的优势,可以在任何支持...

    如何安装与配置JRuby

    - **'cmd' 错误提示**: 如果在运行 JRuby 脚本时出现 `'cmd' 不是内部或外部命令,也不是可运行的程序或批处理文件` 的错误,可能是因为 JRuby 的批处理文件 `jruby.bat` 与系统之间存在冲突。一种临时解决方案是...

    org.jruby.rar

    标题 "org.jruby.rar" 暗示我们正在讨论一个与 JRuby 相关的压缩文件,其中可能包含了 JRuby 的源代码、库文件或者其他相关资源。JRuby 是一种 Java 实现的 Ruby 解释器,它允许 Ruby 代码在 JVM(Java 虚拟机)上...

    jruby1.7.8版本呢

    **JRuby 1.7.8 版本详解** JRuby 是一个开源的、高性能的 Ruby 解释器,它能够将 Ruby 代码编译成 Java 字节码,从而在 Java 虚拟机(JVM)上运行。JRuby 的出现使得 Ruby 开发者能够利用 JVM 的强大功能和丰富的库...

    jruby-bin-1.3.1.zip

    - **安装**:解压zip文件后,将`jruby-1.3.1/bin`目录添加到PATH环境变量中,即可在命令行中使用`jruby`命令。 - **运行Ruby代码**:通过`jruby your_script.rb`命令运行Ruby脚本。 - **与Java集成**:使用`jruby...

    jruby-src-1.0

    这个压缩包“jruby-src-1.0.zip”包含了JRuby 1.0版本的所有源代码文件,对于开发者来说,这是一份宝贵的学习和定制JRuby的资源。 在了解JRuby之前,我们先来看一下Ruby语言。Ruby是由松本行弘(Yukihiro Matsumoto...

    jruby-complete-1.7.19.jar

    jruby-complete-1.7.19.jar,java版本的ruby解析器

    jruby-1.5.5+OperaWatir+RSpec

    文件列表中只提到 "jruby-1.5.5",可能是因为其余部分如 OperaWatir 和 RSpec 的库已经被包含在 JRuby 的环境中,或者它们是以其他文件形式存在,如 Gem 文件或其他配置文件。 对于开发者来说,了解如何将这些工具...

    JRuby在Java测试中的应用

    假设我们需要将两个CSV文件中的数据转换成一个按机构分类的卡BIN规则文件。这个过程中,我们可以利用JRuby的灵活性以及它与Java类库的无缝集成来完成任务。 - **引入Java类库**:首先需要使用`require 'java'`来...

    如何监控JRuby脚本的执行

    此外,还需要在Class Path中添加JRuby相关的jar文件,如bsf.jar和jruby.jar,以便jprofiler能够识别和监控JRuby的运行。 在jprofiler的配置中,"Main class or executable JAR"字段填写`org.jruby.Main`,...

    jruby-1.7.9.zip

    标题 "jruby-1.7.9.zip" 暗示了我们正在处理一个与 JRuby 相关的文件,JRuby 是一个流行的 Java 实现的 Ruby 语言版本。它允许开发者在 Java 平台上运行 Ruby 代码,利用 JVM (Java Virtual Machine) 的性能和生态...

    jruby_windows1.7and bin1.7

    jruby安装包 和 jruby的lib库 JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让...

    jruby-bin-0.9.0.tar.gz

    **标题解析:**"jruby-bin-0.9.0.tar.gz" 是一个压缩文件,其中包含JRUBY的可执行二进制版本,版本号为0.9.0。JRUBY是Ruby编程语言的一个实现,它允许在Java平台上运行Ruby代码。 **描述解读:**描述中提到“Ruby...

    jruby-core-1.7.12.zip

    标题 "jruby-core-1.7.12.zip" 提供的是 JRuby 的核心库版本 1.7.12,这是一个将 Java 虚拟机(JVM)与 Ruby 语言结合的开源实现。JRuby 允许开发者在 Java 平台上运行 Ruby 代码,同时利用 Java 生态系统的强大功能...

    jRuby On Rails WEB2.0

    《jRuby on Rails WEB2.0》:将Ruby on Rails融入Java平台的实践指南 《jRuby on Rails WEB2.0》是一部由Ola Bini撰写的书籍,深入探讨了如何将Ruby on Rails这一敏捷开源框架与Java平台相结合,以构建高效、灵活的...

    走近JRuby

    【压缩包子文件的文件名称列表】:《走近JRuby.ppt》 这个PPT文件很可能是博主分享的演讲材料,包含了对JRuby的深入讲解。内容可能包括以下几个方面: 1. **JRuby简介**:介绍JRuby的历史、开发背景、主要特性,...

    Ruby-JRuby一个Ruby语言的Java实现

    JRuby的版本"jruby-jruby-7bee00d"可能是一个特定的Git提交版本,这表明它是一个开发版本,可能包含了最新的功能和改进。通常,这样的版本会包含一些实验性的特性,对于开发者来说,他们可以提前试用新功能并提供...

Global site tag (gtag.js) - Google Analytics