fix(ocr): Fix mobile file upload ERR_NETWORK on Android/iOS
Clone file to memory immediately after selection to avoid SnapshotState invalidation in W3C File API. Android/iOS browsers invalidate File object references after accessing properties (name, size, type). See: https://issues.chromium.org/40703873 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -217,7 +217,7 @@ const onFileSelected = (event) => {
|
||||
}
|
||||
}
|
||||
|
||||
const handleFile = (file) => {
|
||||
const handleFile = async (file) => {
|
||||
// Validate file type
|
||||
const allowedTypes = ['image/jpeg', 'image/png', 'application/pdf']
|
||||
if (!allowedTypes.includes(file.type)) {
|
||||
@@ -232,8 +232,24 @@ const handleFile = (file) => {
|
||||
}
|
||||
|
||||
error.value = null
|
||||
selectedFile.value = file
|
||||
emit('file-selected', file)
|
||||
|
||||
// FIX pentru Android: Clonăm fișierul în memorie IMEDIAT după selectare
|
||||
// pentru a evita invalidarea referinței de către browser (SnapshotState issue)
|
||||
// See: https://issues.chromium.org/40703873
|
||||
try {
|
||||
const arrayBuffer = await file.arrayBuffer()
|
||||
const clonedFile = new File([arrayBuffer], file.name, {
|
||||
type: file.type,
|
||||
lastModified: file.lastModified
|
||||
})
|
||||
selectedFile.value = clonedFile
|
||||
emit('file-selected', clonedFile)
|
||||
} catch (e) {
|
||||
// Fallback pentru browsere care nu suportă arrayBuffer
|
||||
console.warn('File clone failed, using original:', e)
|
||||
selectedFile.value = file
|
||||
emit('file-selected', file)
|
||||
}
|
||||
}
|
||||
|
||||
const processOCR = async () => {
|
||||
|
||||
Reference in New Issue
Block a user