2014-11-21 2 views
3

File 객체를 Json에 직렬화 할 때 문제가 있습니다.File 객체를 JSON으로 직렬화하는 방법은 무엇입니까?

Im Filereader를 사용하여 파일을 업로드하면 파일 객체 배열 (fileList)이 반환됩니다. 그럼 fileList를 JSON과 ajax로 serialize하려고합니다. 하지만 문제는 다음과 같습니다.

JSON.stringify(fileList) 

Firefox 빈 배열에 반환됩니다. Chrome에서는 정상적으로 작동합니다.

배열의 파일 객체에는 이상한 점이 없습니다.

File { 
    size: 75723, 
    type: "image/jpeg", 
    name: "title.jpg", 
    path: "", 
    lastModifiedDate: Date 2014-11-21T22:55:19.463Z, 
    mozFullPath: 
    "C:\title.jpg" 
} 

어떻게 JSON화할 수 있습니까?

+0

정확히 출력해야합니까? JSON.stringify를 사용할 필요가 없으며 문자열을 연결하여 JSON 문자열을 만들 수 있습니다. –

답변

-1

File 객체에 JSON.stringify(...)을 사용하는 데 문제가 없습니다.

{"webkitRelativePath":"","lastModified":1416614959764,"lastModifiedDate":"2014-11-22T00:09:19.764Z","name":"null","type":"","size":0} 

JSON.stringify(new File([], null)) 

나는 그것을 사용자 지정 목록 유형이다, 문제는 파일리스트가 배열이 아닌 것을 사실 믿습니다. JSON 인코더는 Array와 같이 인코딩해야한다는 것을 모릅니다. 대신 객체로 인코딩하려고합니다.

배열로 변환하여 대신 인코딩 할 수 있어야합니다.

var fileArray = [].slice.apply(fileList); 
JSON.stringify(fileArray); 
+0

Chrome에서는 괜찮습니다. Firefox에서는 전혀 사용하지 않습니다. –

+3

오늘부터는 Chrome에서도 작동하지 않습니다. File 객체의 문자열 화가 작동하지 않으면 수동으로 새 객체를 만들고 속성을 복사해야합니다. – ffxsam

관련 문제