2013-06-05 1 views
5

나는 전형적인 형태에서 FineUploader를 사용하고 싶습니다 : 상세 업 로더 - 다른 입력 필드와 함께 사용하는 방법?

<form enctype="multipart/form-data" method="post""> 
    <input name="fileupload" type="file" "> 
    <input type="text" name="title" size="45" maxlength="100"> 
    <textarea name="description" cols="40" rows="8"></textarea> 
    <input type="hidden" name="op" value="Add"> 
<input type="submit" value="Upload"> 

그래서 사실은 주로 <input name="fileupload" type="file" "> 부품을 교체하고 싶습니다.

불행히도 저는 JavaScript 및 jQuery jet에 익숙하지 않으며이를 수행하는 방법을 모릅니다. FineUploader가 보낼 다른 데이터와 함께 사용되는 모범 코드를 찾을 수 없습니다.

나는 어떤 도움을 주셔서 감사합니다!

감사 Kashuda

+0

답변을 제공하기 전에 좀 더 자세한 정보가 필요합니다. 첫째, 위의 코드를 기반으로 사용자가 하나의 파일 만 선택할 수 있도록하려는 것 같습니다. 이게 너의 의도 야? 둘째, 업로드 할 파일을 끌어다 놓을 수 있도록 사용자를 찾고 있습니까? –

+0

사용자가 파일을 업로드 할 수있는 영역/카테고리가 다릅니다. 대개 하나의 파일 만 업로드합니다. 하지만 한 가지 경우에는 업로드하는 데 두 개의 파일이 필요합니다. 하나는 미리보기 파일 (.jpg)이어야하고 두 번째 파일은 주 개체 (.zip) 여야합니다. 드래그 앤 드롭은 실제로 필요하지 않습니다. 내가 필요한 것은 업로드 진행과 업로드하기 전에 파일 형식과 파일 크기 검사입니다. (Btw. 나는 jQuery 옵션을 찾고있다.) – Kashuda

+0

여기에는 몇 가지 방법이있다. 결과적으로 귀하의 질문에 상당히 복잡하고 상세한 답변이 필요합니다. 나는 다음 6-9 시간 안에 완전한 것을 타이핑 할 것이다. –

답변

5

정밀 업 로더는 옵션 jQuery plug-in을 가지고 (그 문제에 대한 또는 다른 라이브러리) jQuery를 필요로하지 않지만. jQuery를 사용하는 것에 반대하지 않는다면 jQuery 플러그인을 사용하는 것이 좋습니다. jQuery를 사용하면 훨씬 쉽게 작업 할 수 있습니다.

이 고양이를 감추는 데는 몇 가지 방법이 있습니다. 두 경우 모두 수식은 거의 같습니다. 즉, 파인 업 로더가 파일을 처리하고 제출 된 각 파일에 대해 입력 요소를 즉석 작성한 다음 파인 업 로더가 관련 파일을 서버에 보내기 바로 전에 해당 입력 값을 파인 업 로더로 다시 전달합니다.

옵션 # 1 - (사전 내장 UI를 사용하여) FineUploader 모드

FineUploader mode 사용 :

당신은 당신의 필요에 따라 위의 코드에 추가하고, CSS에 기여해야 할 전망이다
<div id="myFineUploaderContainer"></div> 
<button id="uploadSelectedFiles">Upload Selected Files</button> 

$('#myFineUploaderContainer').fineUploader({ 
    request: { 
     endpoint: '/my/upload/endpoint' 
    }, 
    autoUpload: false 
}) 
    .on('submitted', function(event, id, name) { 
     var fileItemContainer = $(this).fineUploader('getItemByFileId', id); 

     $(fileItemContainer) 
     .prepend('<input type="text" name="name">') 
     .append('<input type="text" name="description">'); 
    }) 
    .on('upload', function(event, id, name) { 
     var fileItemContainer = $(this).fineUploader('getItemByFileId', id), 
      enteredName = $(fileItemContainer).find('INPUT[name="name"]').val(), 
      enteredDescr = $(fileItemContainer).find('INPUT[namme="description"]').val(); 

     $(this).fineUploader('setParams', {name: enteredName, description: enteredDescr}, id); 
    }); 

$('#uploadSelectedFiles').click(function() { 
    $('#myFineUploaderContainer').fineUploader('uploadStoredFiles'); 
}); 

적절한 경우, 올바른 방향으로 시작해야합니다. 위의 경우, 선택한 파일을 나타내는 DOM에 목록 항목을 추가하면 FineNavigator가 다시 전화를 기다리고 있습니다. 콜백을 받으면 목록 항목의 시작 부분 (사용자 제공 이름의 경우)과 목록 항목의 끝 부분 (사용자 제공 설명의 경우)에 텍스트 입력 요소를 추가합니다. 파인 업 로더 (Finder Uploader)는 파일을 서버로 전송하고 "업로 드"이벤트 핸들러를 호출하여 입력 요소의 값을 읽고 파인 업 데이트에 제공하고 파일 ID를 통해 파일과 연결합니다. 파인 업 로더는이 정보를 포함합니다 다중 파트 인코딩 된 POST 요청의 파일과 함께 서버로 전송합니다.

클릭 핸들러는 파일을 서버로 보내도록 신호를 보내고 모든 파일을 선택하고 채운 다음 사용자가이를 클릭합니다 일반적으로 파인 업 로더는 파일을 선택한 직후에 서버로 보내지 만 토글로 변경 될 수 있습니다 예 : autoUpload 옵션 상황에 따라 자동 업로드를 끄는 것이 가장 좋습니다.

FineUploader 모드를 사용하면 대부분의 작업이 완료되어 UI에 대해 너무 걱정할 필요가 없으며 진행률 표시 줄 및 기타 UI 기능을 무료로 사용하여 & 끌어 오기 기능을 사용할 수 있습니다.

옵션 # 2 - FineUploaderBasic 모드 (자신 만의 UI를 구축)

두 번째 선택은 FineUploaderBasic mode을 사용하는 것입니다. 이렇게하면 UI를 가장 잘 제어 할 수 있지만 자신 만의 UI를 완전히 만들어야하므로 대부분의 작업이 필요합니다. 즉, 대부분의 callbacks을 사용하여 UI를 구성하고 Fine Uploader의 내부 상태 및 관련 파일과 동기화 된 상태로 유지해야합니다.

예를 들어 진행률 표시 줄을 원한다면 직접 업 그레 이드해야하며 미세 업 로더가 호출하는 onProgress 콜백 처리기를 통해 주기적으로 전달 된 정보를 기반으로 업데이트해야합니다. 자바 스크립트, HTML 및 CSS에 익숙하다면이 모든 것이 좋고 경우에 따라 선호 될 수 있습니다. 그러나 그렇지 않은 경우 FineUploader 모드를 사용해보십시오.

FineUploader 기본 모드에는 기본적으로 드래그 앤 드롭 지원이 포함되어 있지 않지만 원하는 경우 Fine Uploader's standalone File Drag & Drop module을 쉽게 통합 할 수 있습니다.

+0

확인. 이 포괄적 인 답변에 감사드립니다. 다음 세 가지 사항은 여전히 ​​명확하지 않습니다. 1. 사용자가 다른 모든 입력 필드를 채운 후 업로드하려는 파일을 변경하기로 결정하면 onSubmit 액션이 다시 호출되므로이 필드는 지워집니다. 2.) 내 미리보기를 위해 두 번째 업로드 버튼을 어떻게 추가합니까? 3.) 성공적인 업로드 후에 어떻게 새 페이지를로드합니까? – Kashuda

+0

1)이 업 로더의 작동 방식을 이해하지 못했습니다. 제 대답을 해보시기 바랍니다. 모든 파일에 대해 총 업 로더는 하나뿐입니다. 2) 두 개의 업로드 버튼이 필요한 이유는 무엇입니까? 다시 말하지만, 나는 이것이 어떻게 작동하는지 이해하지 못한다고 생각합니다. 버튼 두 개, 모든 파일을위한 버튼 하나만 있으면 안됩니다. 3) 모든 파일이 완전히 토론 된 후 "완료"처리기에 새 페이지를로드하십시오. 자세한 내용은 설명서를 참조하십시오. –

+0

위의 "충분히 논의하십시오"는 "성공적으로"읽어야합니다. –