AI Demos Research — the structured-intelligence platform. Every verdict on these pages opens to the execution behind it.
Graded 9 October 2026

Does Dify report bad uploaded files as failures?

Dify reports both unprocessable uploads as errors. Each file ends in error with its own PDFium message, and neither is completed or silent.

1 of 1 test case passed

Every test case in this scenario has a result.

Pass rate100%1 of 1 gradable
Coverage1 of 1test case with a result
1PassDid everything it was expected to do.
0FailNo test case failed.
0Not gradableEvery result here could be graded.
0UntestedEvery test case in this scenario has a result.
The pass rate is a summary. The evidence is the test case below: what we sent, what we checked, what the tool returned, and the proof.

The test case

Each test case is judged on its own: Pass, Fail, Not gradable, or Untested. The scenario result above counts this row.

Unprocessable file submitted through the normal upload pathPassEvidence
What we sent

We uploaded the two bad files through the normal upload path.

What the tool returned
Text
Response to input 1
"error": "Failed to load document (PDFium: Data format error)."

Response to input 2
"error": "Failed to load document (PDFium: Incorrect password error)."

Capture log: uploads, queueing, and final error read-backs for both files

Copied from Captured file (text), lines 64–70 · an excerpt

Open the whole text file ↗

Copied from Captured file (text), lines 124–130 · an excerpt

Source excerpt · partial file · response 1

Text
=== bad_01_truncated.pdf — GET /datasets/{dataset_id}/documents (after indexing completes) ===
{
  "id": "1a2edc6b-e93d-48a7-b7b6-daabb76f0e2c",
  "name": "bad_01_truncated.pdf",
  "indexing_status": "error",
  "error": "Failed to load document (PDFium: Data format error)."
}

Copied from Captured file (text), lines 64–70 · an excerpt

Source excerpt · partial file · response 2

Text
=== bad_02_password_protected.pdf — GET /datasets/{dataset_id}/documents (after indexing completes) ===
{
  "id": "b412cd09-d3ff-4158-9553-dd144aca0ebb",
  "name": "bad_02_password_protected.pdf",
  "indexing_status": "error",
  "error": "Failed to load document (PDFium: Incorrect password error)."
}

Copied from Captured file (text), lines 124–130 · an excerpt

Expected vs. Found
✓Expected: The document must be reported as failed, not successful or silent.Found: Each file is reported as an error on its own document; neither is completed or silent.
Supporting proof
Proof 1Captured file (text)
Capture log: original read-backs showing both files ending in error
The tool’s response is printed above, under What the tool returned. Show this file
Text126 lines
=== bad_01_truncated.pdf — GET /datasets/{dataset_id}/documents (filtered) ===
{
  "id": "3d043d76-335f-475d-8379-9ae1905cf49d",
  "position": 9,
  "data_source_type": "upload_file",
  "data_source_info": {
    "upload_file_id": "c5d086e9-351d-438d-aa69-9fabdccee222"
  },
  "data_source_detail_dict": {
    "upload_file": {
      "id": "c5d086e9-351d-438d-aa69-9fabdccee222",
      "name": "bad_01_truncated.pdf",
      "size": 89876,
      "extension": "pdf",
      "mime_type": "application/pdf",
      "created_by": "f1034bbd-04df-4592-ba22-56dac49ae8ad",
      "created_at": 1789752872.506339
    }
  },
  "dataset_process_rule_id": "719751cf-6a09-493a-bc0e-88914b4a8bc1",
  "name": "bad_01_truncated.pdf",
  "created_from": "api",
  "created_by": "f1034bbd-04df-4592-ba22-56dac49ae8ad",
  "created_at": 1789752873,
  "tokens": null,
  "indexing_status": "error",
  "error": "Failed to load document (PDFium: Data format error).",
  "enabled": true,
  "disabled_at": null,
  "disabled_by": null,
  "archived": false,
  "display_status": "error",
  "word_count": null,
  "hit_count": 0,
  "doc_form": "text_model",
  "doc_metadata": [],
  "summary_index_status": null,
  "need_summary": false
}

=== bad_02_password_protected.pdf — POST /datasets/{dataset_id}/document/create-by-file ===
(response captured at ingestion time — indexing_status: waiting)


=== bad_02_password_protected.pdf — GET /datasets/{dataset_id}/documents/{document_id} (after indexing) ===
{
  "id": "1af12b39-f10e-4659-87a7-261894ef8e29",
  "position": 16,
  "data_source_type": "upload_file",
  "data_source_info": {
    "upload_file": {
      "id": "86d1f71c-f863-4619-9e40-e7207de5ebd7",
      "name": "bad_02_password_protected.pdf",
      "size": 174963,
      "extension": "pdf",
      "mime_type": "application/pdf",
      "created_by": "f1034bbd-04df-4592-ba22-56dac49ae8ad",
      "created_at": 1789932244.334837
    }
  },
  "dataset_process_rule_id": "6b2e92f1-b08e-41b7-8c56-ddc6de50001b",
  "dataset_process_rule": {
    "mode": "automatic",
    "rules": {
      "pre_processing_rules": [
        {
          "id": "remove_extra_spaces",
          "enabled": true
        },
        {
          "id": "remove_urls_emails",
          "enabled": false
        }
      ],
      "segmentation": {
        "delimiter": "\n",
        "max_tokens": 500,
        "chunk_overlap": 50
      }
    }
  },
  "document_process_rule": {
    "id": "6b2e92f1-b08e-41b7-8c56-ddc6de50001b",
    "dataset_id": "084fc635-481f-4970-bf09-299c83eca3c2",
    "mode": "automatic",
    "rules": {
      "pre_processing_rules": [
        {
          "id": "remove_extra_spaces",
          "enabled": true
        },
        {
          "id": "remove_urls_emails",
          "enabled": false
        }
      ],
      "segmentation": {
        "delimiter": "\n",
        "max_tokens": 500,
        "chunk_overlap": 50
      }
    }
  },
  "name": "bad_02_password_protected.pdf",
  "created_from": "api",
  "created_by": "f1034bbd-04df-4592-ba22-56dac49ae8ad",
  "created_at": 1789932244,
  "tokens": null,
  "indexing_status": "error",
  "completed_at": null,
  "updated_at": 1789932244,
  "indexing_latency": null,
  "error": "Failed to load document (PDFium: Incorrect password error).",
  "enabled": true,
  "disabled_at": null,
  "disabled_by": null,
  "archived": false,
  "segment_count": 0,
  "average_segment_length": 0,
  "hit_count": 0,
  "display_status": "error",
  "doc_form": "text_model",
  "doc_language": "English",
  "summary_index_status": null,
  "need_summary": false
}
Open the text file ↗
Proof 2Screenshot
Notebook screenshot: read-backs showing both files ending in error
The tool’s response is printed above, under What the tool returned. Show this screenshotOpen original ↗
Why this result

It is a pass, not a fail: each bad file ends in error on its own document, with no completed status and no silence.

Tested by Vivek Tomar · evidence dated 20 September 2026
Limitations of this result

The uploaded PDFs are not shown directly; they are identified only by filename, size, and content type in the request lines.

This log shows only the read-back; the upload call itself is not visible.

Configuration and setup

How this tool was set up for the run and what the test needed in place. Each row is a fact from the run's records; a fact the records do not hold is left out, not guessed.

Software that produced the output
Dify
Build or version
Dify Cloud
Surface
API
Set up before the run
A genuinely unprocessable file had to be uploaded through the normal upload path, then its own ingestion status had to be checked.
Indexing technique
high_quality
Processing mode
automatic
Tested
20 September 2026 · Vivek Tomar

How this scenario is graded

How we decide Pass, Fail and Not gradable. The same rules apply to every tool tested on this scenario.

How results are decided

Each test case gets one result per tool: Pass, Fail or Not gradable. A test case we haven't run yet shows Untested. There are no partial results.

The rules
  • Pass: the tool did everything the test expected, and nothing it said contradicts the correct answer.
  • Fail: at least one expected behaviour clearly didn't happen; the row says which and quotes the tool.
  • Not gradable: our evidence couldn't settle the outcome (for example a record we needed is missing). It is never counted as a fail, and the row says what's missing.

Where this sits in the benchmark

This page is one cell of a larger study: one tool, one scenario. Only this benchmark's frame appears here.

LevelNameScope
BenchmarkManaged RAG →15 scenarios · 9 tools
CapabilityData Ingestion →
ScenarioA bad file in the upload →
ToolDify →

History of this result

What has happened to this result since it was first published. Runs and grades are never overwritten: a retest or a re-grade publishes a new result and keeps the earlier one readable.

from the publication record
29 October 2026First publishedManaged RAG v1

Act on this result

Nothing filed here edits the run or the grade. A challenge opens a review, and a review can produce a new run or a re-grade — which becomes the current result and leaves this one in the history.

This matches what I see

You run the same kind of test against your own setup and get the same behaviour.

Agree →
This does not match

Yours behaves differently. Tell us what you got, with a screenshot if you have one.

Disagree →
Point out an issue

Something here is wrong — a reference value, a transcription, a grade.

Report an issue →
Request a retest

On a newer build, a larger dataset, or your own setup.

Request a retest →
We have fixed this

Tell us what changed and we schedule a rerun of the failing test case. The old result stays as history.

Vendor notice →
Filed against this evidenceNothing yet. Challenges, counter-evidence and fix notices appear here with their outcome, and stay on the page after they are resolved.
Cite this result
aidemos.com/benchmarks/managed-rag/results/dify/a-bad-file-in-the-upload · 1 pass · 0 fail · coverage 1/1 · graded 2026-10-09

The same record is available as structured data through the AI Demos MCP server, with the counts, the coverage and every per-test-case reason carried as fields.

Verify the proof files

These files support this result. Open a file to inspect the original evidence.

Captured file (text) ↗text/plain; charset=utf-8 · 5 KB
Proof 1 · Captured file (text) ↗text/plain; charset=utf-8 · 3 KB
Proof 2 · Screenshot ↗image/png · 178 KB
File fingerprints (SHA-256)

A fingerprint identifies the exact file used for this result.

Captured file (text)98ae68469d04a8c68cf19bac71e1f72af1a6314c40ae25c722d854226f5c0c5e
Proof 1 · Captured file (text)8fa238aaa3e8114dac368b59257d26d556b8075e5bec8db6e4757a32d5992862
Proof 2 · Screenshot64dc3dec2ab691da83f3835c4b35e0beda9bf30bf6c2cb4cd0befdb9034370b9