|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。
服务器用的是ubuntu1264bit,情况是ruby1.9.3+rails3+mysql,测试是在windows2003上。
上传一个【.gitconfig】文件,没有成绩,上传【新浪微博数据发掘.pdf】报错,上传【back.jpg】报错。
下面是两段信息,是从【log/production.log】中粘贴出来的。下面一段你是没有成绩的日记,上面一段是报错以后的日记。
01.StartedPOST"/posts"for106.3.102.43at2012-10-2921:16:26+0800
02.ProcessingbyPostsController#createasHTML
03.Parameters:{"utf8"=>"?","authenticity_token"=>"QG8aU6/VW5ZMagzyGhjdbm7fSzr4MB5CKdJeGBIeOa4=","post"=>{"category_id"=>"1","title"=>"666666666666","url"=>"6666666","picture"=>#<ActionDispatch::Http::UploadedFile:0x000000032fb838@original_filename=".gitconfig",@content_type="application/octet-stream",@headers="Content-Disposition:form-data;name="post[picture]";filename=".gitconfig"
Content-Type:application/octet-stream
",@tempfile=#<File:/tmp/RackMultipart20121029-2609-1lrmc9o>>,"content"=>"6666","tags_attributes"=>{"0"=>{"title"=>""}}},"commit"=>"CreatePost"}
04.Redirectedtohttp://42.121.5.68/posts
05.Completed302Foundin36ms(ActiveRecord:30.1ms)
01.StartedPOST"/posts"for123.114.36.100at2012-10-3008:58:13+0800
02.ProcessingbyPostsController#createasHTML
03.Parameters:{"utf8"=>"?","authenticity_token"=>"rRnhcDWYDn+OntxxC2LmIEHpSpjWI5glrs6JlprG1Ho=","post"=>{"category_id"=>"1","title"=>"博客实验最新宝贝","url"=>"post7","picture"=>#<ActionDispatch::Http::UploadedFile:0x000000030df9a0@original_filename="新浪微博数据发掘计划.pdf",@content_type="binary/octet-stream",@headers="Content-Disposition:form-data;name="post[picture]";filename="xE6x96xB0xE6xB5xAAxE5xBExAExE5x8Dx9AxE6x95xB0xE6x8DxAExE6x8Cx96xE6x8Ex98xE6x96xB9xE6xA1x88.pdf"
Content-Type:binary/octet-stream
",@tempfile=#<File:/tmp/RackMultipart20121030-16129-15agvlb>>,"content"=>"博客尝>试最新宝贝","tags_attributes"=>{"0"=>{"title"=>"博客实验最新宝贝"}}},"commit"=>"CreatePost"}
04.Completed500InternalServerErrorin45ms
05.
06.Encoding::UndefinedConversionError("xE2"fromASCII-8BITtoUTF-8):
07.app/controllers/posts_controller.rb:60:in`write
08.app/controllers/posts_controller.rb:60:in`block(2levels)increate
09.app/controllers/posts_controller.rb:59:in`open
10.app/controllers/posts_controller.rb:59:in`blockincreate
11.app/controllers/posts_controller.rb:56:in`create
对照以后,发明两段的picture部分的@content_type纷歧样,乐成的是@content_type="application/octet-stream",失利的是@content_type="binary/octet-stream"。
实验上传一个txt文件,乐成了,@content_type部分是@content_type="text/plain"。
断定是这个部分的缘故原由,也就是编码,以是报错编码毛病,未界说编码转换。
上传部分的代码以下- uploaded_io=params[:post][:picture]
- ifuploaded_io!=nilanduploaded_io.content_type.match(image)
- File.open(Rails.root.join(public,uploads,uploaded_io.original_filename),w)do
- |f|
- f.write(uploaded_io.read)
- end
- else
- end
复制代码 经由一番查找,找到了深层的缘故原由,本来是二进制文件的原因,ruby在读取和保留的时分会主动处置二进制文件,不必要特别的体例。
但是在windows中,二进制和文本文件是分歧的,在二进制mode下,停止行不克不及被本义为一个独自的换行,而是被保留为一个回车和一个换行。以是假如读取的是二进制文件,必要在open的时分要指明读取的是二进制文件wb。b就是二进制的意义。
图片默许依照二进制文件处理,以是就中招了。实在也只必要把w改成wb就能够了。
<p>
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。 |
|