首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails应用程序- send_data从数据库发送乱码文档

Rails应用程序- send_data从数据库发送乱码文档
EN

Stack Overflow用户
提问于 2012-11-24 06:11:40
回答 1查看 510关注 0票数 0

我正在使用rails应用程序来显示存储在sql server数据库中的数据。数据输入全部通过MS Access前端完成到sql服务器数据库中。rails应用程序是通过access应用程序输入信息的“只读”查看器。

在access前端,我使用绑定对象框架让用户上传各种类型的文档(.pdf、.msg、.docx等)。输入到数据库中。该对象存储在我的sqlserver上的varbinary字段中。这在使用Access前端时工作得很好。使用正确的主机应用程序正确地检索和显示文档。

问题是,当通过rails应用程序将这些相同的对象发送回去查看时。

当我尝试通过浏览器将二进制数据作为文件发送下来时,它的宿主应用程序无法读取接收到的文件。对于发送下来的文件,文件扩展名是正确的,但应用程序似乎无法读取它们。当我在记事本中检查文件时,我看到了一些文本片段,但文件有问题,因此MS Word或PDF Reader等无法读取它们。

控制器中的代码非常简单:

代码语言:javascript
复制
def view_word_doc

  a=Attachment.find(params[:id])
  send_data a.Document, :filename => 'flibber.docx'
 end

(Document是表中包含varbinary的字段)

这在浏览器中具有预期的结果,系统询问我是否要打开或保存该文件,然后它尝试使用word打开该文档。然而,word表示该文档已损坏。当我尝试打开.pdf、.msg文件等时,出现类似的结果。

我也尝试过使用send_file。在这种情况下,我得到一个控制器错误--

AttachmentsController#view中的编码::未定义的转换错误

从Windows-1252到UTF-8转换中的"\x81“到UTF-8

我将类型保留为default,我知道它是Application/Octet-stream,但我不太熟悉这是什么意思。

正如我所提到的,这一切都与access前端配合得很好。只是不能在rails中正确发送。

EN

回答 1

Stack Overflow用户

发布于 2017-03-05 11:28:06

您可能已经编码将文件作为GET方法接收到您的routes.rb中,因此它试图以内联/在浏览器中显示它们,或者可能是视图中使用的链接,而它需要是一个默认使用POST方法的按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13536280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档