跳转至

pl-file-upload元件

提供一种接受文件上传作为答案的一部分的方法。它们将被存储 采用外部评分问题所期望的格式。

Note

文件大小限制为 每个答案 5 MB。此限制不可定制为更大 请求将被服务器拒绝。出于同样的原因,也无法绕过 在同一问题中使用多个 pl-file-upload 元素进行限制。为避免意外错误或 对于大文件上传可能会产生误导性的错误消息,我们建议不要使用多个 每个问题的 pl-file-upload 元素。

样品元素

pl-file-upload 元素的屏幕截图

question.html
<pl-file-upload file-names="foo.py, bar.c, filename with\, comma.txt"></pl-file-upload>

定制

属性 类型 默认 描述
file-names CSV 列表 “” 必须提交的文件列表。文件名中的逗号应使用反斜杠转义,并且文件名不能包含引号。
file-patterns CSV 列表 “” 必须提交的文件名模式列表(见下文)。对于每种模式,必须上传一个匹配的文件。逗号和特殊模式字符应使用反斜杠转义,并且文件名不能包含引号。
optional-file-names CSV 列表 “” 可以提交的文件列表,但是可选的。逗号应使用反斜杠转义,文件名不能包含引号。
optional-file-patterns CSV 列表 “” 可以提交的文件名模式列表(见下文),但是可选的。对于每个模式,可以上传任意数量的匹配文件。逗号和特殊模式字符应使用反斜杠转义,并且文件名不能包含引号。

支持的通配符模式

file-patternsoptional-file-patterns 属性支持多个通配符以允许一系列文件名:

  • ? 占位符允许使用单个通配符。例如,solution?.txt 允许 诸如“solution1.txt”、“solution2.txt”等文件,但不包括“solution10.txt”。
  • * 占位符允许任意数量的通配符。例如,*.txt 允许使用“solution.txt”、“my_file.txt”和“.txt”等文件。
  • [seq] 占位符允许方框内列出的选项集中的单个字符 括号。例如,file_[abc].txt 允许“file_a.txt”、“file_b.txt”和“file_c.txt”(以及 作为它们的大写等价物,如“file_A.txt”,因为匹配不区分大小写),但不是 “文件_x.txt”。
  • [seq] 占位符还支持“a-z”或“0-9”等范围。例如,file[0-9].txt 允许“file5.txt”,但不允许“filex.txt”。范围也可以组合。例如,file[0-9a-z].txt 允许单个字母数字 字符,因此“file5.txt”和“filex.txt”。

Note

file-patternsoptional-file-patterns 接受 fnmatch 文件 glob,而不是正则表达式。当前不支持支撑扩展 ({foo,bar}.txt)。

Note

模式匹配不区分大小写,因此像 file[0-9a-z].txt 这样的模式也匹配大写字符 (e.g. "fileX.txt")。

文件图案 允许:white_check_mark: 不允许❌
solution?.txt solution1.txtsolution2.txtsolutionA.txt solution10.txtsolution.txt
*.txt solution.txtmy_file.txt.txt solution.pymy_file
file_[abc].txt file_a.txtfile_b.txtfile_c.txt file_x.txtfile_ab.txt
file[0-9].txt file5.txtfile0.txtfile9.txt filex.txtfile10.txt
file[0-9a-z].txt file5.txtfilex.txtfileX.txt file10.txtfile_.txt
[!_]*.py solution.pymy_file.py _foo.pyfile.txt

如果文件名或模式重叠,则首先使用上传的文件填写file-names中所需的文件名。接下来,与 file-patterns 中所需模式匹配的文件用于填充该模式。任何剩余上传的文件如果与 optional-file-names 中的名称或 optional-file-patterns 中的模式匹配,则被接受。

必需文件(file-namesfile-patterns)和可选文件(optional-file-namesoptional-file-patterns)的处理方式相同,因此如果您需要区分这两组,则应确保模式不重叠。

Tip

file-patterns 中相同的所需模式可以重复,例如 *.py,*.py 意味着必须上传两个 Python 文件。但是,不同的所需模式不应重叠(例如 *.py,solution.*),因为文件被任意分配给匹配的模式,这可能会导致意外的行为。

细节

pl-file-upload 元素和上传文件 (s) 的内容仅默认显示在问题面板中。如果希望在提交面板中列出内容,则应使用其他元素(例如 pl-file-previewpl-xss-safe)显式添加内容。

示例实现

  • [演示/自动评分器/代码上传]
  • [演示/手册成绩/代码上传]

参见