2

내부 용 Chrome 확장 프로그램을 구축 중이며 한 단계에서 사용자가 파일을 업로드 할 수 있습니다. 이 파일은 이고 항상입니다. 찾아보기 대화 상자를 건너 뛰고 입력 필드에 적절한 값을 직접 지정하고 싶습니다.찾아보기 파일/업로드 파일 건너 뛰기 대화 상자

파일은 플러그인 코드와 별개입니다.

Javascript를 사용하거나 Chrome, Firefox 확장 프로그램을 개발할 수 있습니까?

input.val("file://C:/random.txt") 

을하고 주변 양식을 제출

나는 노력했다. 하지만 그건 효과가 없었습니다.

+1

:

그래서 파이어 폭스에서 당신은 같은 것을 할 것입니다. 표준 API를 사용하여이를 수행 할 방법이 없습니다. [File API] (http://www.w3.org/TR/FileAPI/)조차 사용자가 파일의 위치를 ​​알려주는 첫 번째 단계가 필요합니다. –

+1

관심있는 모든 것이 Chrome 확장 프로그램이라면 firefox-addon 태그를 추가해야하는 이유는 무엇입니까? –

+0

@WladimirPalant 가능하다면 ff 확장을 개발하는 것이 좋습니다. int – momomo

답변

2

파이어 폭스 :

당신이 원하는 것은 this answer에 따라 가능한 것 같다,하지만 난 밀접하게 조사하지 않았습니다.

크롬 :는 NPAPI plugin

외부,이 확실히 할 수 없습니다. 브라우저가 파일 대화 상자를 통해 사용자가 명시 적으로 요청한 경우를 제외하고는 파일 시스템에 액세스 할 수 없습니다. 웹상의 어떤 페이지가 프로그래밍 방식으로 파일 경로를 설정 한 다음 사용자가 양식 단추를 클릭 할 때 파일을 가져올 수 있다면 엄청난 보안 문제가 발생할 수 있습니다.

따라서 일반 웹 페이지에서는 분명히 할 수 없습니다. 크롬 확장 일 수 있다면 (즉, 파일 시스템의 파일을 읽는 경우) 최소한 특별한 권한이 필요합니다. list of permissions에는 파일 시스템 액세스가 포함되어 있지 않으므로 문제는 아닙니다.

내가 처음 언급 한 유일한 옵션은 여드름을 치료할 병원을 짓는 것과 같은 파일을 읽는 NPAPI 플러그인을 개발하는 것입니다. NPAPI는 꽤 가파른 개발 학습 곡선을 가지고 있으며 중요한 보안 문제를 야기합니다 (확장이 이제 로컬 사용자에게 적용될 수 있기 때문에 보안 손상 비용은 훨씬 높습니다).

파일을 브라우저의 virtual HTML5 filesystem에 저장하려는 경우이 작업을 수행 할 수 있습니다. 귀하의 필요에 대한 구체적인 지식이 없으면 그것이 귀하에게 적절한지 말할 수 없습니다.

2

파일을 서버로 보내고 <input> 필드에서 파일을 선택하는 것이 잘못된 방법입니다. 바로 FormData objectsend it via XMLHttpRequest을 만들 수 있습니다. 기존 양식에서 FormData 개체를 만들 수도 있습니다. 이 기능은 Firefox와 Chrome 모두에서 작동하며 웹 페이지에서도 작동합니다 (일반적으로 동일한 출처 제한이 적용됩니다).

까다로운 부분은 양식 데이터에 추가 할 수있는 File object입니다. Chrome 확장 프로그램은 NPAPI 플러그인을 사용하지 않고 파일 시스템에 직접 액세스 할 수 없으므로 사용자의 디스크 드라이브에서 파일을 가져올 수 없으며 일부 데이터가 포함 된 BLOB 만 만들 수 있습니다. 그러나 파이어 폭스 확장 기능은 경로로 File 개체를 만들 수있는 File constructor을 가지고 있습니다.그것은 크롬 확장 API에서 뭔가해야 할 것

var formdata = new FormData(); 
formdata.append("file", new File("file://C:/random.txt")); 

var request = new XMLHttpRequest(); 
request.open("POST", "http://my.server/submitFile"); 
request.send(formdata); 
+0

내 목표는 제출 버튼을 클릭하고 그 전에 올바른 파일을 선택하기 만하면 기존 양식을 제출하는 것입니다. 나는 파일을 직접 보낼 수 없다. 나는 단지 기존의 로컬 서버 관리 콘솔 (Websphere)을 클릭하는 것을 자동화하고있다. – momomo