Skip to content

FIX:microsoft word text copy and paste error #14905

New issue

Have a question about this project? No Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “No Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? No Sign in to your account

Merged
merged 1 commit into from
Mar 14, 2025

Conversation

ShadowJobs
Copy link
Contributor

@ShadowJobs ShadowJobs commented Mar 4, 2025

Summary

Fix #15674
Fixes: This addresses a newly identified bug。
Addresses unexpected file validation when pasting text from Microsoft Word, where clipboard metadata caused false-positive "文件类型不支持" errors. (Only Microsoft Word has this issue; WPS does not.)

  • Root cause:
    Microsoft Word's clipboard operation injects file metadata alongside text content. During pasting:
  • e.clipboardData.files and e.clipboardData.items both contain data
  • The original handleClipboardPasteFile() logic prioritized checking files[0] existence
  • This caused text pasting to be incorrectly intercepted as file upload attempts

Technical breakdown:

// Problematic logic
const file = e.clipboardData?.files[0]
if (file) {  // ← MS Word satisfies this
  handleFileUpload()             // ← Wrong execution path
  e.preventDefault()             // ← Blocks default text paste
}

Solution:

  • Modified handleClipboardPasteFile to check for simultaneous text presence
  • Only trigger file upload when:
    • Clipboard contains a file
    • AND no plain text exists in clipboard data

Technical Details

Updated validation logic:

const handleClipboardPasteFile = useCallback((e: ClipboardEvent<HTMLTextAreaElement>) => {
  const file = e.clipboardData?.files[0]
  const text = e.clipboardData?.getData('text/plain') // New text check
  if (file && !text) { // Critical condition update
    e.preventDefault()
    handleLocalFileUpload(file)
  }
}, [handleLocalFileUpload])

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods

@dosubot dosubot bot added size:XS This PR changes 0-9 lines, ignoring generated files. 🐞 bug Something isn't working 📚 documentation Improvements or additions to documentation labels Mar 4, 2025
@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Mar 14, 2025
@crazywoola crazywoola merged commit 0587eb4 into langgenius:main Mar 14, 2025
5 checks passed
parambharat pushed a commit to parambharat/dify that referenced this pull request Mar 31, 2025
Co-authored-by: LinYing <linying@momenta.ai>
No Sign up for free to join this conversation on GitHub. Already have an account? No Sign in to comment
Labels
🐞 bug Something isn't working 📚 documentation Improvements or additions to documentation lgtm This PR has been approved by a maintainer size:XS This PR changes 0-9 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

In Dify 1.01, text content cannot be pasted in the dialog box.
2 participants