pl-file-upload元件¶
提供一种接受文件上传作为答案的一部分的方法。它们将被存储 采用外部评分问题所期望的格式。
Note
文件大小限制为 每个答案 5 MB。此限制不可定制为更大
请求将被服务器拒绝。出于同样的原因,也无法绕过
在同一问题中使用多个 pl-file-upload 元素进行限制。为避免意外错误或
对于大文件上传可能会产生误导性的错误消息,我们建议不要使用多个
每个问题的 pl-file-upload 元素。
样品元素¶

<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-patterns 和 optional-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-patterns 和 optional-file-patterns 接受 fnmatch 文件 glob,而不是正则表达式。当前不支持支撑扩展 ({foo,bar}.txt)。
Note
模式匹配不区分大小写,因此像 file[0-9a-z].txt 这样的模式也匹配大写字符 (e.g. "fileX.txt")。
| 文件图案 | 允许:white_check_mark: | 不允许 |
|---|---|---|
solution?.txt |
solution1.txt、solution2.txt、solutionA.txt |
solution10.txt、solution.txt |
*.txt |
solution.txt、my_file.txt、.txt |
solution.py、my_file |
file_[abc].txt |
file_a.txt、file_b.txt、file_c.txt |
file_x.txt、file_ab.txt |
file[0-9].txt |
file5.txt、file0.txt、file9.txt |
filex.txt、file10.txt |
file[0-9a-z].txt |
file5.txt、filex.txt、fileX.txt |
file10.txt、file_.txt |
[!_]*.py |
solution.py、my_file.py |
_foo.py、file.txt |
如果文件名或模式重叠,则首先使用上传的文件填写file-names中所需的文件名。接下来,与 file-patterns 中所需模式匹配的文件用于填充该模式。任何剩余上传的文件如果与 optional-file-names 中的名称或 optional-file-patterns 中的模式匹配,则被接受。
必需文件(file-names 或 file-patterns)和可选文件(optional-file-names 或 optional-file-patterns)的处理方式相同,因此如果您需要区分这两组,则应确保模式不重叠。
Tip
file-patterns 中相同的所需模式可以重复,例如 *.py,*.py 意味着必须上传两个 Python 文件。但是,不同的所需模式不应重叠(例如 *.py,solution.*),因为文件被任意分配给匹配的模式,这可能会导致意外的行为。
细节¶
pl-file-upload 元素和上传文件 (s) 的内容仅默认显示在问题面板中。如果希望在提交面板中列出内容,则应使用其他元素(例如 pl-file-preview 或 pl-xss-safe)显式添加内容。
示例实现¶
- [演示/自动评分器/代码上传]
- [演示/手册成绩/代码上传]
参见¶
pl-file-editor提供浏览器内代码环境pl-external-grader-results包括自动评分代码的输出pl-code显示带有语法突出显示的代码块pl-string-input用于接收单个字符串值