文件上传
允许受访者从设备上传文件。支持可配置的文件类型限制和大小限制。

类型标识符:file_upload
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
choices | Choice[] | 用于文件上传时,每个选项的 label 字段指定允许的 MIME 类型或文件扩展名(例如 "application/pdf"、"image/*")。如果为空,则接受所有文件类型。 | [](所有类型) |
max | number | 最大文件大小(兆字节,MB)。 | 无(适用平台限制) |
文件存储
上传的文件存储在 Vercel Blob 存储中。每条上传记录包括:
| 字段 | 描述 |
|---|---|
blobUrl | 文件的 Vercel Blob 存储 URL。 |
originalName | 用户的原始文件名(例如 resume.pdf)。 |
uuidName | 存储在 blob 中的基于 UUID 的名称(例如 a1b2c3d4.pdf)。 |
size | 文件大小(字节)。 |
contentType | MIME 类型(例如 application/pdf、image/png)。 |
存储跟踪
每个用户的总文件存储消耗以字节为单位跟踪(User 模型上的 storageUsedBytes)。存储限制因计划等级而异。
验证
如果 required 为 true,受访者必须上传文件才能继续。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
答案存储为 FileUploadValue 对象:
{
"fileId": "abc123",
"originalName": "resume.pdf",
"size": 245760,
"contentType": "application/pdf",
"downloadUrl": "/api/files/resume.pdf?id=abc123"
}
文件上传归属于表单的 ID 和可选的用户 ID。受访者上传(匿名)的 userId 设为 null,而构建器媒体上传(问题的图片)则设置用户的 ID。
绘图
受访者可以在手绘画布上绘制素描、图表或注释。
类型标识符:drawing
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
canvasSize | string | 绘图画布的大小。选项:small、medium、large。 | medium |
画布大小
| 大小 | 描述 |
|---|---|
small | 适合简单草图或图标的紧凑画布。 |
medium | 适合图表和插图的标准画布。 |
large | 适合详细绘图的扩展画布。 |
交互
- 绘图画布支持使用鼠标或触摸输入的手绘绘图。
- 受访者可以绘制、擦除和撤销操作。
- 最终绘图导出为图片文件。
验证
如果 required 为 true,受访者必须创建绘图才能继续。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
答案存储为 FileUploadValue 对象(绘图保存为图片文件):
{
"fileId": "def456",
"originalName": "drawing.png",
"size": 102400,
"contentType": "image/png",
"downloadUrl": "/api/files/drawing.png?id=def456"
}
绘图问题不显示单独的"确定"按钮。受访者使用表单的标准导航控件提交绘图。
视频/音频录制
通过受访者的浏览器使用设备的摄像头和麦克风直接捕获视频或音频回复。
类型标识符:recording
属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
recordingMode | string | 录制类型。选项:video、audio。 | video |
maxDuration | number | 最大录制时长(秒)。 | 120(2 分钟) |
录制模式
| 模式 | 描述 |
|---|---|
video | 使用设备的摄像头和麦克风同时录制视频和音频。 |
audio | 仅使用设备的麦克风录制音频。不需要摄像头。 |
交互
- 受访者点击"开始录制"按钮。
- 浏览器请求摄像头/麦克风权限(如果尚未授权)。
- 录制期间显示实时预览。
- 受访者点击"停止录制"结束。
- 显示录制内容的预览。
- 受访者可以重新录制或继续。
浏览器要求
- 需要支持 MediaRecorder API 的现代浏览器。
- 受访者必须授予摄像头和/或麦克风权限。
- 媒体捕获需要 HTTPS(所有 NueForm URL 默认使用 HTTPS)。
验证
如果 required 为 true,受访者必须完成录制才能继续。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
答案存储为 FileUploadValue 对象:
{
"fileId": "ghi789",
"originalName": "recording.webm",
"size": 524288,
"contentType": "video/webm",
"downloadUrl": "/api/files/recording.webm?id=ghi789"
}
视频录制可能产生较大的文件。请考虑设置合理的 maxDuration 以控制文件大小。标准质量的 2 分钟视频录制通常产生 5-15 MB 大小的文件。
签名
数字签名板,受访者可以使用鼠标、触控笔或手指绘制签名。

类型标识符:signature
属性
签名问题类型除通用问题属性外没有额外属性。
交互
- 显示一个空白的签名板。
- 受访者使用鼠标、触控笔或触摸输入绘制签名。
- 提供"清除"按钮以重新开始。
- 签名以矢量路径或图片形式捕获。
验证
如果 required 为 true,受访者必须绘制签名才能继续。
逻辑跳转运算符
equals、not_equals、is_answered、is_not_answered
答案格式
答案存储为字符串(通常是签名的 data URL 或 base64 编码图片)。
与绘图和录制相比,签名非常轻量。它们通常存储为 SVG 路径或小型 PNG 图片,文件大小远低于 100 KB。
媒体问题上的媒体附件
与所有其他问题类型一样,媒体捕获问题也支持媒体附件(图片、视频、图标、二维码)。这使您可以在捕获界面旁边显示示例或说明。例如,您可以在签名问题上显示示例签名图片作为媒体,或在文件上传问题上显示链接到配套移动上传页面的二维码。
有关媒体选项和布局配置的详情,请参阅创建表单指南。