electron [Bug]:在没有过滤器的情况下使用showSaveDialog,更改名称时会丢失扩展名,

nfg76nw0  于 6个月前  发布在  Electron
关注(0)|答案(6)|浏览(71)

预检清单

Electron 版本

25.1.0

您正在使用的操作系统是什么?

Windows

您正在使用的操作系统版本是什么?

Windows 10,版本 19041.1415

您正在使用的架构是什么?

x64

最后已知正常工作的 Electron 版本

  • 无响应*

预期行为

const { filePath } = await dialog.showSaveDialog({ defaultPath: "change-me.txt" })
// presented as "change-me" -- change to "updated-name"
console.log(filePath) // >> "updated-name.txt"

实际行为

const { filePath } = await dialog.showSaveDialog({ defaultPath: "change-me.txt" })
// presented as "change-me" -- change to "updated-name"
console.log(filePath) // >> "updated-name" (no extension)

测试用例代码片段 URL

https://gist.github.com/jamiebuilds/4731be0aa643774a71e4543a572f753f

其他信息

  • 并非总能在保存可能的每个文件扩展名时创建一个过滤器
  • 在用户空间处理类似 .tar.gz 这样的路径是很困难的
rur96b6h

rur96b6h1#

我认为这是Windows系统的设计行为。如果你保存一个类型为All Files的文件,那么扩展名可以是任何内容。当你启用"显示文件名扩展名"时,效果会更加明显。我同意这很繁琐,但解决方案可能是在需要的时候在你的代码中验证/附加扩展名。

3zwtqj6y

3zwtqj6y2#

我不确定如果将文件扩展名附加到Windows用户的行为会是什么。

  • 如果他们提供了一个不打算使用的自己的扩展名,会发生什么? file.mov -> file.mp4file.jpeg -> file.wrong
  • 如果有多个扩展名应该如何展示? file.tar.gzfile.html.md
  • 现在如果你传递了 file.tar.gz,提示显示的是 file.tar,你应该完全去掉它吗?
  • 如果他们使用了文件扩展名的别名 .jpeg -> .jpg.js -> .mjs,会发生什么?

一个选项是忽略他们输入的任何文件扩展名: https://gist.github.com/jamiebuilds/dbb1d7464e944a1b275df642cadd3aa1
我想我不知道这会如何影响不同的Windows用户。如果有人输入了自己的文件扩展名,他们会期望这个扩展名被尊重吗?

vaj7vani

vaj7vani3#

这个问题已经被自动标记为过时。如果这个问题仍然影响到你,请留下任何评论(例如“提升”),我们会保持开放。如果你有任何新的附加信息——特别是,如果这个问题在 latest version of Electronbeta 中仍然可复现——请在你的评论中包含它!

pcrecxhr

pcrecxhr5#

这个问题已经被自动标记为过时。如果这个问题仍然影响到你,请留下任何评论(例如“提升”),我们会保持开放。如果你有任何新的附加信息——特别是,如果这个问题在 latest version of Electronbeta 中仍然可复现——请在你的评论中包含它!

相关问题