Skip to content
New issue

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

By clicking “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? Sign in to your account

FIX:microsoft word text copy and paste error #14905

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ShadowJobs
Copy link

@ShadowJobs ShadowJobs commented Mar 4, 2025

Summary

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working 📚 documentation Improvements or additions to documentation size:XS This PR changes 0-9 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant