Skip to main content

Let respondents upload a file

The file-upload question lets a respondent attach one or more files to their response. It needs Pro.

Pro

File upload needs an active Pro licence. See pricing.

SettingWhat it doesDefaultLimitsEdition
Allowed file typesWhich extensions a respondent can pickjpg, jpeg, png, pdf, doc, docxChosen from a fixed safe list of 15: jpg, jpeg, png, gif, webp, pdf, doc, docx, xls, xlsx, ppt, pptx, txt, csv, zipPro
Maximum file sizeLargest single file accepted5 MB1–25 MB per filePro
Maximum number of filesHow many files one respondent can attach11–10 filesPro
Combined size capTotal size across every file on this question0 (no cap of its own)Up to 50 MB when set; must be at least the per-file maximumPro

Blocked regardless of your settings

SurveyX blocks executable, script, and markup files on the server, no matter what you've allowed: PHP files (including .phtml, .phar, and similar variants), .htaccess and .htpasswd, HTML and XML files, SVG files, JavaScript files, and common server-side and executable formats (.asp, .jsp, .cgi, .py, .rb, .sh, .exe, .dll, .jar, and others). This check reads the file's actual extension and content, not only the name the browser reports, so it can't be bypassed by renaming a file.

Where files go, and who can reach them

Files are stored on your own site, under wp-content/uploads/surveyx/<survey_id>/, each renamed to a random id rather than kept under its original filename.

Every uploaded file is served from a URL like any other file on your site — anyone who has the link can open or download it. There's no login or token check on the file itself. SurveyX hardens the folder in other ways (directory listing is off, scripts can't execute there, and — on Apache — the file is forced to download rather than render in the browser), but none of that is an access check. Don't collect files you wouldn't want reachable by anyone who ends up with the link.

What the admin sees, and what export carries

The response drawer shows a download link for each uploaded file. The response CSV export carries the file URLs, not the files themselves — when a question has several files, their URLs are joined with | in the same cell.

Rate limits

These aren't settings you configure — they're built-in limits that stop abuse:

  • A single respondent can upload at most 20 files per minute.
  • A single IP address can upload at most 60 files and 100 MB per hour.
  • A single survey can hold at most 2,000 stored files and 1,024 MB in total.

What respondents see: a file picker limited to your allowed types, size, and count.

The file-upload question&#39;s picker on the front end, showing the drop zone and the accepted-types and maximum-size hint beneath it

Troubleshooting

A respondent's upload is rejected even though the extension looks allowed. Check whether it's on the blocked list above — that block applies no matter what you've allowed, and it checks the file's actual content, not only its name.

The combined size cap won't go below what I want. It has to be at least the per-file maximum — raise the combined cap, or lower the per-file size instead.

I want the uploaded files to stay private. Not possible today — any file uploaded to this question is reachable by anyone with its URL.

A respondent hit an upload error with no obvious cause in my settings. Check the rate limits above — none of them appear as a setting, but any one of them can block an upload.