2009-02-24 2 views
36

저는 웹 응용 프로그램을 만들고 있습니다. 사용자가 HTTP 프로토콜로 파일을 업로드 할 수있는 곳이 한 곳 있습니다. 클래식 HTML 파일 업로드 컨트롤과 파일을 업로드하는 Java 애플릿간에 선택할 수 있습니다.브라우저에서 여러 파일을 업로드하는 가장 좋은 방법입니다.

한 번에 하나의 파일 만 선택할 수 있기 때문에 고전적인 HTML 파일 업로드는 좋지 않습니다. 실제로 업로드하는 동안 진행 상태 표시를 얻는 것은 매우 어렵습니다 (마침내 타이머를 사용하여 진행률 표시기를 새로 고침했습니다. AJAX 호출을 통해 서버에서 가져온 데이터). 이점 : 항상 효과가 있습니다.

자바 애플릿을 사용하면 여러 파일을 한 번에 (폴더) 선택하고, 파일을 압축하고, 실제 진행률 막대를 얻고, 애플릿에 파일을 드래그 앤 드롭 할 수 있습니다.
하지만 몇 가지 단점이 있습니다 :

  • UI를 정확히 네이티브 UI되지는 맥 사파리와 맥 파이어 폭스에서 제대로 작동하는 (감사는 LiveConnect)를 얻을 수있는 악몽의 어떤 사람들이 통지는
  • 애플릿이 응답 할 수있는만큼 반응이 없습니다 (내 잘못 일 수 있지만 모든 것이 나에게 잘 들립니다).
  • Java UrlConnection 클래스에 HTTPS가있는 버그가 있으므로 Apache HTTP 클라이언트를 사용하여 실제 HTTP 업로드를 수행합니다. 그것은 매우 큰 꾸러미와 .jar 파일의 다운로드 속도가 느려집니다
  • 아파치 일반적인 HTTP 클라이언트는 프록시를 통해
  • Java 런타임가는 문제는 내가이 유지했습니다

매우 큰 가끔있다 자바 애플릿은 잠시 동안지만, 지금은 모든 단점에 시달리고, 쓰고/논문 파일을 업로드하기위한 완전히 새로운 구성 요소를 구입 고려하십시오.

질문

다음과 같은 요구 사항이 있다면 : HTTP 또는 HTTPS

  • 을 통해 브라우저에서 쉽게

    • 업로드 여러 파일 업로드 시간을 줄이기 위해 파일을 압축을
    • 업로드는 모든 플랫폼에서 작동해야합니다. 기본 UI
    • 은 최대 2GB의 대용량 파일을 업로드 할 수 있어야합니다. t 이상
    • 당신은

    어떤 기술/compontent 당신이 사용하는 것과 기술에 백지 위임장을 가지고?


    편집 : 구성 요소의 파일

    • Drag'n'Drop은 큰 플러스가 될 것입니다.
    • Flash Player (swfupload known issues)의 버그와 관련된 많은 문제가있는 것처럼 보입니다. 적절한 Mac 지원과 인증 기능이있는 프록시를 통해 업로드하는 것은 내가 할 수없는 옵션입니다. 이것은 아마도 모든 플래시 기반 옵션을 배제 할 것입니다 :-(.
    • 고전 HTML 컨트롤을 사용하여 한 번에 둘 이상의 파일을 선택할 수 없기 때문에 모든 HTML/Javascript 전용 옵션을 제외합니다. 폴더에서 여러 파일을 선택하려면 "찾아보기"버튼을 n 번 클릭하면됩니다.
  • +2

    무엇 재개 업로드에 대한? 그건 나에게 정말로 중요해 보인다.몇 시간 후에 업로드에 실패하면 업로드를 다시 시작하는 것을 좋아하지 않습니다. –

    +0

    그렇다면 플래시 (Java (및 Silverlight)) 만 사용할 수 있다고 생각하지 않습니다. –

    +0

    안녕하세요 다른 플래시 기반 업 로더는 다른 곳과 달리 http://digitarald.de/project/fancyupload/ –

    답변

    4

    확인이 내가 swfupload 몇 가지 테스트를했다이

    에 내 걸릴 것입니다, 나는 자바 내 이전 경험을 가지고, 내 결론이 할 수있는 완벽한 솔루션이없는 어떤 기술을 사용하는 것입니다 브라우저에 업로드 : SSL을, 큰 파일을 업로드하는 프록시를 통해 갈 때 항상 버그하게 될 겁니다, 등 ...

    하지만 :

    • 플래시 업 로더는 (라 swfupload) 나 자바 업 로더는 승인을 필요로하지만 당신은 당신이 원하는대로 할 수
    • 생각, 사용자의 승인을 필요로하지 않는, 정말 가볍고 정말 멋지다 기본 인터페이스를 가지고 사용자가 선택한 파일 (필요한 경우 압축) 및 끌어서 놓기가 잘 작동합니다. 일부 서사시적인 버그를 디버깅 할 준비가되어 있습니다.
    • 기술이 아직 아주 젊기 때문에 Silverlight를 사용하기 위해 변경 사항을 얻지는 못했지만, 그 기술은 아직 아주 어림도 없을 수 있습니다. 실버
    모든 답변에 대한

    감사를 조금 바이올린! google gears에 대한

    +1

    몇 년 후에이 답을 찾는 사람들을위한 메모. 우리는 수년 동안 SWFUpload를 사용해 왔으며, 일반적으로 정말 잘 작동합니다. 한 가지주의해야 할 점은 Flash Player 9부터 인증 헤더를 보내지 않으므로 통합 Windows 인증 또는 인증이 필요한 프록시 서버를 사용하면 작동하지 않습니다. 이러한 이유로 우리는 HTML5 기반 솔루션으로 이동했습니다. –

    0

    는 HTTP/HTTPS 다중 파일 업로드를 허용 업로드 컨트롤이 있습니다. Here은 텔리 크 (Telerik)의 제품으로, 견고하고 신뢰할 수있는 제품입니다. 최신 버전은 기능 요구 사항 전부는 아니지만 대부분의 기능을 갖추고 있습니다.

    +0

    에 있습니다. AJAX 업 로더는 .NET에 연결되어있어 유용하지 않습니다. – Javier

    +0

    또한 한 번에 하나의 파일을 선택할 수 없습니다. 어쩌면 당신은 telerik silverlight 업로드 컨트롤에 대해 말하고 싶었을 것입니다. –

    3

    멋진 다중 파일 업로드 기능과 함께 존재하는 수많은 무료 플래시 구성 요소가 있습니다. 그들은 서버 측에서 PHP (또는 무엇이든) 수신기로 ActionScripts FileReference 클래스를 사용합니다. 일부는 최근 FP10의 출시와 함께 깨진했지만 나는 swfupload이 도움이 :)

    희망을 작동합니다 확실히 알아!

    0

    데이브는 이미 지적한대로,뿐만 아니라 HTTP 형태로 여러 파일을 업로드 할 수 있습니다,하지만 당신은 어떤 HTTP를 넘어 뭔가를 사용하여 설정하는 경우와 자바 스크립트 내가 무겁게 플래시를 고려할 수 있습니다. MultiPowUpload과 같은 기존 솔루션도 있으며 원하는 기능을 많이 제공합니다. Javascript의 AJAX 호출보다 Flash 클라이언트를 사용하여 진행 정보를 얻는 것이 더 쉽습니다. 유연성이 조금 더 필요하기 때문입니다.

    0

    Apache Commons FileUpload 패키지를 확인할 수 있습니다. 여러 개의 파일을 업로드하고 업로드 진행 상황을 모니터링 할 수 있습니다. 여기에서 자세한 정보를 찾을 수 있습니다 :

    http://commons.apache.org/fileupload/
    http://commons.apache.org/fileupload/using.html

    행운

    +1

    Apache Commons Fileupload는 파일 업로드 http 게시물을 구문 분석하는 데 사용되는 Java 서버 측 라이브러리입니다. 나는 이미 그 부분을 일하고있다. 나는 정말로 클라이언트 부분에 초점을 맞추고있다. –

    5

    내가 실버 라이트에서 최근에 뭔가를 구현했습니다.

    기본적으로 HttpWebRequest를 사용하여 데이터 덩어리를 GenericHandler에 보냅니다.

    첫 번째 게시물에는 4KB의 데이터가 전송됩니다. 두 번째 청크에서 또 다른 4K 청크를 보냅니다.

    두 번째 청크가 수신되면 첫 번째 청크와 두 번째 청크 사이에 걸린 왕복을 계산하므로 세 번째 청크가 전송 될 때 속도가 증가한다는 것을 알게됩니다.

    이 방법을 사용하면 모든 파일을 업로드 할 수 있으며 다시 시작할 수 있습니다.

    나는이 정보를 함께 보내 각 게시물 :

    [파라미터] [FILEDATA]

    다음

    이 매개 변수에 포함 된 다음 [청크 #] [파일 이름] [세션 ID]

    각 청크가 수신 된 후 얼마나 빨리 실버 라이트에 응답을 보내면 이제는 더 큰 청크를 보낼 수 있습니다.

    코드없이 내 설명을 넣기는 어렵지만 기본적으로 어떻게 했는가?

    어느 시점에서 내가 어떻게했는지에 대한 간단한 글을 작성하겠습니다.

    +0

    소리가 멋지다. 나는 이것도 시도하고 싶다. 나는 마침내 관리 코드를 사용하여 클라이언트 측에서 파일을 조작 할 수 있다는 점을 좋아합니다! 긴 라이브 Silverlight! – TJB

    +0

    브라우저 쿠키 관리자, 프록시, 플랫폼 지원과 관련하여 siverlight 플레이어에서 문제가 발생 했습니까? –

    +0

    Silverlight는 클라이언트 측에서 실행되며 업로드 처리기는 서버 측에서 실행됩니다. 둘 다 세션에서 분리되었으므로 시작시 세션 ID를 실버 라이트로 전달합니다. 업로드하는 동안 세션은 Silverlight에서 처리기로 전달되어 세션 내에서 모두 유지됩니다. – Gautam

    5

    I가 2GB의 파일을 사용한 적이 있지만, YUI File Uploader는 이전 프로젝트에서 꽤 잘했다. 또한이 jQuery Plugin에 관심이있을 수 있습니다.

    난 아직도 자바 애플릿이 갈 수있는 방법이라고 생각했다 그. 생각보다 이동성과 UI 문제가 적어지고 드래그/드롭이 잘 작동한다고 생각합니다. 기록을 위해 Box.net은 다중 파일 빠른 업로드를 위해 Java 애플릿을 사용합니다.

    +0

    Box.net은 업로드를위한 첫 번째 옵션으로 플래시 구성 요소를 사용합니다. 그런 다음 해당 구성 요소는 "drag'n'drop"을 사용하려는 사용자를위한 Java 애플릿에 대한 링크를 제공합니다. –

    1

    무엇?

    +0

    좋은 생각이지만 약간 무서운 것은 Mac OS X Snow Leopard에서 지원되지 않는다는 것입니다 : Snow Leopard는 2 개월 동안 나갔습니다 !! 나는 파이어 폭스에서 호기심으로 그것을 시험해 보겠다;) 고마워! –

    2

    무엇이 두 Jupload http://jupload.sourceforge.net/ 및 jumploader http://jumploader.com/

    모두 자바 애플릿하지만 그들은 또한 사용하고 구현하는 모두 정말 쉬운에 대한.

    +0

    그래, 나는 JUpload에 대해 이미 들어 본 적이있다. 실제로 스트레스를 가할 기회가 없다. https를 통한 업로드가 일반적으로 문제가된다는 것을 알고 있습니다. 문제는 JDK 구현 자체에 있습니다 .JUpload가 기본 구현을 사용하는 경우 문제가 발생할 수 있습니다. –

    +0

    Jumploader 정보 : UI가 정말 좋고 HTTPs를 지원하는 것 같습니다. 내 의견 좀 봐 줄 가치가 :) –

    0
    자바 파일 업로드의

    가장 쉬운 방법은 다음 GOJFileUpload.jar 라이브러리

    인 gojfileupload 라이브러리 튜토리얼 :

    GOJFileUpload

    그들은 두 가지 방법

    • 을 UploadFile (문자열 파일 경로를 제공 , ArrayList imagenames, HttpRequest 요청)
    • UploadFile (문자열 파일 경로 , ArrayList를 dataname, ArrayList를 imagenames, HttpRequest에 요청)

    그들은 당신이 당신의 지정된 대상 폴더에 업로드 후 업로드 한 모든 파일 이름을 해시 맵 돌아갑니다.

    관련 문제