strapi>>>面对“ enametoolong:名字太长”错误
系统信息
- Strapi版本:4.1.12
- 操作系统:MACOS
- 数据库:Postgres
- 节点版本:16.15.1
- NPM版本:8.11.0
- 纱线版本:1.22.11
当我尝试上传带有长名的文件时,我会在错误的位置上添加到以下错误:
错误:Enametoolong:名称太长
文件名称: lorem ipsum只是打印和排版行业的虚拟文本。自1500年代以来,Lorem Ipsum一直是该行业的标准虚拟文本,当时一家未知的打印机戴上了类型的厨房,并在此处制作一本类型的标本书A.pdf
有人可以帮助我解决这个根本原因错误?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是您的文件系统。您的示例文件名看起来恰好255个字节,但是您在其中有“奇特的报价”。它不是撇号(0x27)或backtick(0x60),而是三个字节,
0x2e 0x80 0x99
。错误是完全正确的:名称太长。您可以检查此列表,搜索字符
u+2019
,您会看到此字节序列与您的报价字符匹配。JavaScript的字符串函数,例如
''。subStr()
在 targue 和不是 bytes 上工作,因此,请简单地使用filename.substr( 0,255)
将不起作用。最好的方法是使用知道如何在不打破特殊字符序列的情况下修剪UTF-8字符串的外部软件包,例如多字节报价或表情符号。
It's your file system. Your example filename looks exactly 255 bytes, but you have a "fancy quote" in there. It's not an apostrophe (0x27) or backtick (0x60) but three bytes,
0x2e 0x80 0x99
. The error is entirely correct: name too long.You can check this list, search for character
U+2019
and you'll see this sequence of bytes matches your quote character.JavaScript's string functions, such as
''.substr()
work on characters and not bytes, so simply usingfilename.substr(0, 255)
will not work.The best way is to use an external package that knows how to trim UTF-8 strings without breaking special character sequences, like your multi-byte quote or emoji.