# 使用 .mod ASCII 文件时，出现非确定性的文件上传问题

**URL:** https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031
**Category:** Bug
**Created:** [2023年八月29日 12:28 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031 "2023-08-29T12:28:17Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![JohannesPfeifer](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johannespfeifer/32/323183_2.png) [@JohannesPfeifer](https://meta.discourse.org/u/JohannesPfeifer)
#### Post date: [2023年八月29日 12:28 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/1 "2023-08-29T12:28:18Z")

</div>

Dynare 项目运行一个基于官方 Docker 镜像的 Discourse 论坛。主要使用的文件类型是结尾为 `.mod`（代表“模型”）的 ASCII 文件。大约一个月左右，用户在上传该文件类型（以及其他文件类型）时会随机（约 50% 的情况）遇到上传问题。上传会卡住：

![image](https://global.discourse-cdn.com/meta/original/4X/6/0/7/6072a2e64aba7ea76feda4d7f074478ba2853864.png)

将相同内容以 `.txt` 结尾上传或打包在 zip 文件中则可以正常工作。不幸的是，管理员们无法重现该问题，即使他们模仿受影响的用户进行操作。

我们猜测问题出在尝试文件转换上，因为 Discourse 似乎试图将 `.mod` 文件当作[媒体文件](https://en.wikipedia.org/wiki/MOD_and_TOD)处理。尝试上传实际的 `.mod` 视频文件（例如 VideoLAN 支持的）会收到错误消息：

```plaintext
/var/www/discourse/lib/discourse.rb:137:in `exec': An error happened when converting from PNG to JPG

```

即使将“png to jpg quality”设置关闭转换，也会出现此消息。

---

<div class="post-metadata">

### Author: ![EricGT](https://avatars.discourse-cdn.com/v4/letter/e/f1d935/32.png) [@EricGT](https://meta.discourse.org/u/EricGT)
#### Post date: [2023年八月29日 12:33 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/2 "2023-08-29T12:33:54Z")

</div>

> [@JohannesPfeifer](#):
>
> 即使在冒充受影响的用户时也是如此。

这只是一个奇怪的想法，甚至不在优先列表上，但你提到的事情让我想到了这个。

如果管理员在冒充用户，他们可能不会使用从客户端机器到服务器的相同路由。我在想像 Cloudflare 这样的服务可能在其中发挥作用。

---

<div class="post-metadata">

### Author: ![JohannesPfeifer](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johannespfeifer/32/323183_2.png) [@JohannesPfeifer](https://meta.discourse.org/u/JohannesPfeifer)
#### Post date: [2023年八月29日 12:47 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/3 "2023-08-29T12:47:06Z")

</div>

谢谢。服务器使用 CloudFare DNS 服务器。但我怀疑这会影响我们的 Discourse 实例，因为它在自己的容器中，因此使用 Discourse 开发人员配置的 DNS 服务器。

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2023年八月31日 12:29 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/4 "2023-08-31T12:29:41Z")

</div>

您好 Johannes，

我无法重现您的问题，即使使用新的、非员工账户和 .mod ASCII 文件也是如此。

这个问题是否只发生在您的一些用户身上？

---

<div class="post-metadata">

### Author: ![JohannesPfeifer](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johannespfeifer/32/323183_2.png) [@JohannesPfeifer](https://meta.discourse.org/u/JohannesPfeifer)
#### Post date: [2023年八月31日 14:57 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/5 "2023-08-31T14:57:09Z")

</div>

感谢您对此事的关注。总的来说，这似乎是随机发生的。我不知道它是否会持续地发生在某些用户身上，而另一些用户则完全不会遇到。但遇到此问题的用户似乎会放弃，随后粘贴文件的文本内容。所以情况可能是这样。

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [2023年八月31日 16:03 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/6 "2023-08-31T16:03:37Z")

</div>

🙂 了解他们的设备/操作系统/浏览器会很有趣。

---

<div class="post-metadata">

### Author: ![JohannesPfeifer](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/johannespfeifer/32/323183_2.png) [@JohannesPfeifer](https://meta.discourse.org/u/JohannesPfeifer)
#### Post date: [2023年九月4日 18:17 UTC](https://meta.discourse.org/t/non-deterministic-file-upload-issues-with-mod-ascii-files/277031/7 "2023-09-04T18:17:17Z")

</div>

确实，很遗憾，我还没有那方面的信息。我会问一些用户，然后回来汇报。
