Pylons 在 Windows 上上传扭曲的图像

2023-12-23

我正在 Pylons 中创建一个网络应用程序,并且正在处理图像上传操作。目前正在我的 Windows 机器上使用 Egg:paste#http 运行,使用 pylons 文档快速入门中描述的基本开发配置。

当我将图像发布到我的应用程序,然后将图像移动到 Web 根目录,然后在浏览器中拉出上传的图像时,图像出现扭曲。这是我上传 Yahoo! 的 GIF 时得到的结果。徽标,但大多数文件根本不会显示在浏览器中,可能是因为损坏:

扭曲的雅虎徽标 http://www.freeimagehosting.net/uploads/d2c92aef00.png http://www.freeimagehosting.net/uploads/d2c92aef00.png

这是我正在使用的基本代码(直接来自 pylons 文档):

os_path = os.path.join(config.images_dir, request.POST['image'].filename)
save_file = open(os_path, 'w')
shutil.copyfileobj(request.POST['image'].file, save_file)
request.POST['image'].file.close()
save_file.close()

request.POST['image'] 是一个 cgi.FieldStorage 对象。我认为这可能是 Windows 行结尾的问题,但我不确定如何检查或纠正它。是什么导致我上传的图像扭曲/损坏?


您可能只是缺少有效地将文件写入二进制文件的“b”(二进制)标志:

save_file = open(os_path, 'wb')

但我不明白你为什么需要shutil.copyfileobj在那里打电话,为什么不做这样的事情:

file_save_path = os.path.join(config.images_dir, request.POST['image'].filename)
file_contents = request.POST['image'].file.read()

# insert sanity checks here...

save_file = open(file_save_path, 'wb')
save_file.write(file_contents)
save_file.close()

或者使最后三行更加Pythonic(确保即使写入失败文件句柄也会关闭):

with open(file_save_path, 'wb') as save_file:
    save_file.write(file_contents)

您可能需要一个

from __future__ import with_statements

如果您低于 Python 2.6,则位于文件顶部。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pylons 在 Windows 上上传扭曲的图像 的相关文章

随机推荐

  • 如何在11g中通过select语句为新创建的表的列设置默认值

    我在 Oracle 11g 中创建一个表 其中一列使用默认值 语法是 create table xyz emp number ename varchar2 100 salary number default 0 这样就创建成功了 由于某些原
  • 为什么重载方法没有被调用?

    我认为被调用的方法是在运行时决定的 或者我错过了什么 示例代码 class Program static void Main string args var magic new MagicClass magic DoStuff new Im
  • 在 Cocoa 中使用 autorelease 的成本是多少?

    大多数苹果文档似乎都避免使用自动释放对象 特别是在创建 gui 视图时 但我想知道使用自动释放对象的成本是多少 UIScrollView timeline UIScrollView alloc initWithFrame CGRectMak
  • exoplayer播放器错误无法连接到hls链接

    我有一个 hls 链接 可以使用 mpv 正常播放 但在 exoplayer 中出现此错误 PlayerError com google android exoplayer2 ExoPlaybackException com google
  • IE 9 和 10 产生意外且不一致的 MediaError

    我们有一组 HTML 块 比如说大约 50 个 它们被迭代地解析并具有Audio动态添加的对象 var SomeAudioWrapper function name this internal player new Audio this i
  • VBA 根据输入值查找下一列

    在我现在尝试编写的程序中 我采用两列数字并对它们进行计算 在用户告诉我之前 我不知道这两列位于哪里 他们在我的代码所在的工作簿的单元格中输入列值 例如 如果用户输入 A 和 B 作为所有信息所在的列 我可以根据这些值执行计算 同样 如果他们
  • Visual Studio 下的 string::swap 复杂性

    The 参考参数 http en cppreference com w cpp string basic string swap页面说的是std basic string swap它具有恒定的复杂性 我认为这意味着无法复制内容 只能交换指针
  • JavaScript HtmlCollection 循环永远不会返回第二个元素

    我知道有关于如何访问和迭代 HtmlCollection 的答案 但它在这里对我不起作用 我得到了一些 tabSheetActive 类的元素 这些元素的数量可以是 1 或更多 我通过以下方式访问它们 var activeTabSheets
  • Python:通过套接字在两台计算机之间发送数据

    我正在编写一个脚本 该脚本可以在两台可以访问互联网的不同计算机之间传输数据 我正在使用 python 的套接字标准模块 当我在一台计算机上运行客户端和服务器时它工作正常 但当它们在不同计算机上运行时我无法使它们工作 这是我的服务器代码的一部
  • 尽管在前台运行且使用 START_STICKY,但在终止后无法重新启动服务

    我面临着一个关键问题 即绑定服务作为前台运行并带有通知 正如我找到的大多数教程和解决方案所提到的 我所做的一切都是正确的 我有一个启动服务然后与其绑定的活动 在服务的 onCreate 中 我使用 startForeground 并显示通知
  • 如何处理非常大的文本文件?

    我目前正在编写一些需要处理非常大的文本文件 至少几个 GiB 的东西 这里需要的是 这是固定的 基于 CSV 遵循 RFC 4180 嵌入式换行符除外 对行进行随机读取访问 但主要是逐行读取并接近末尾 在末尾添加行 换行 显然 这需要重写文
  • 发布管道与集成运行时冲突

    此问题涉及如果数据工厂中定义了自托管集成运行时 如何通过 CI 在 VSTS 中 传播数据工厂 我设置了 3 个环境 Dev UAT Prod 每个环境都有自己的数据工厂 开发人员托管主协作分支 我正在使用 VSTS 从 adf publi
  • 将模板字符串中的键替换为对象属性

    我有一个这样的对象 var obj Id 1 Rate 5 Price 200 Name History 还有这样的模板 var templateString
  • 如何在 Zeit Now 上使用 GraphQL 后端部署 Next.js?

    我有一个 Next js Express Apollo GraphQL 应用程序在本地主机上运行良好 我尝试将其部署在 Zeit Now 上 Next js 部分工作正常 但 GraphQL 后端失败 因为 graphql路线返回 502
  • React 渲染动态内部组件

    这个例子说明了我正在尝试做的事情 目标是拥有一个动态组件数组并将其渲染到屏幕上 我无法完成渲染部分 import PropTypes from prop types import React from react import MyComp
  • 谷歌服务器putty连接'断开连接:没有可用的支持的身份验证方法(服务器发送:公钥)

    我正在尝试通过 PuTTy 连接到我的 Debian Google Compute Engine 服务器 我也尝试过其他替代方案 但是当我这样做时 我收到错误 已断开连接 没有可用的受支持的身份验证方法 服务器发送 公钥 谷歌服务器没有用户
  • 如何在 macOS Sierra 上使用 tkinter 模块

    我正在尝试学习如何在 Python 中使用 tkinter 模块 但是当我在本地运行它时 出现以下错误 Traceback most recent call last File emailer line 1 in
  • 更新了导航框架并收到错误 -“getActionId 不覆盖任何内容”

    我已将导航框架从 2 3 5 更新到 2 4 0 alpha01 版本 我将它与 Safe Args gradle 插件一起使用 更新后 我开始得到 getActionId overrides nothing and getArgument
  • Android UDID 和 iPhone 一样吗?

    Android 也有像 iPhone 一样的 UDID 吗 如果是 有什么方法可以以编程方式获取它吗 谢谢 克里斯 来自docs http developer android com intl zh TW reference android
  • Pylons 在 Windows 上上传扭曲的图像

    我正在 Pylons 中创建一个网络应用程序 并且正在处理图像上传操作 目前正在我的 Windows 机器上使用 Egg paste http 运行 使用 pylons 文档快速入门中描述的基本开发配置 当我将图像发布到我的应用程序 然后将