2014-07-10 5 views
1

extjs 파일 업로드의 이상한 동작이 있습니다. 내가 파일을 제거하면 다음Extjs가 이미 업로드되었을 때 두 번째로 파일을 업로드 할 수 없습니다.

onOpenFileBrowserChange: function (filefield, newValue, oldValue, eOpts) { 
      var me = this,    
      form = filefield.up('form').getForm(), 
      infoBox = invoiceorigin.down('#fileuploadinfoplaceholder'), 
      fileDescription, 
      secondfilefield, 
      customerFileName = newValue.replace(/^.*[\\\/]/, ''), 
      draft = me.getDraft(), 
      isSigned = true, 
      files = draft.files(); 

     if (filefield.itemId === 'uploadandsign') { 
      isSigned = false; 
      secondfilefield = invoiceorigin.down('#uploadnosign'); 
      fileDescription = 'File system, Unsigned'; 
     }   
     secondfilefield.disable(); 

     if (form.isValid()) { 
      form.submit({ 
       url: NG.getLatestApiPath('WebInvoice', 'UploadInvoiceFile'), 
       waitMsg: NG.getLabel('webinvoiceInvoiceOriginUploadingFile'), 
       success: function (fp, o) { 
        if (o.result.success) { 

         var file = o.result.file; 

         files.add({ 
          fileName: file.fileName, 
          createDate: file.createDate, 
          isAttachment: false, 
          isSigned: isSigned, 
          fileOrigin: fileDescription, 
          customerFileName: customerFileName, 
          invoiceFileOrigin: 'Local' 
         }); 

         filefield.disable(); 
         infoBox.removeAll(); 
         infoBox.add(Ext.create('NG.view.webinvoice.InformationBox', { 
          data: { 
           closable: true, 
           icon: true, 
           iconCls: 'n-pdf-icon', 
           content: '<div class="n-text-overflow" style="width:145px;">' + fileDescription + '<br/>' + customerFileName + '</div>' 
          } 
         })); 
        } 
        else {        
        } 
       }, 
       failure: function (form, action) { 
       } 
      }); 
     } 
     return false; 
    }, 

: 파일 업로드 성공은

items: [{ 
        xtype: 'filefield', 
        itemId: 'uploadandsign', 
        buttonText: NG.getLabel('browse'), 
        buttonOnly: true, 
        hideLabel: true, 
        width: 100 
       }] 

경우 내가 "X"버튼을 제거하여 화면에 성공적으로 라벨을 보일 것 :

파일 업로드

과 같이 정의 #infobox에서 호출 된 reset() 함수는 다음을 호출했습니다.

onRemoveFileClick: function (view) { 
      var me = this, 
      invoiceorigin = view.up('invoiceorigin'), 
      uploadNoSignBtn = invoiceorigin.down('#uploadnosign'), 
      uploadAndSignBtn = invoiceorigin.down('#uploadandsign'), 
      infoBox = invoiceorigin.down('#fileuploadinfoplaceholder'), 
      draft = me.getDraft(), 
      files = draft.files(), 
      pagemanager = view.up('webinvoicepagemanager'), 
      invoiceFilePlace = files.findExact('isAttachment', false); 

     me.deleteFileConfirmReject(
      NG.getLabel('webinvoiceInvoiceOriginDeleteInvoiceFileTitle'), 
      NG.getLabel('webinvoiceInvoiceOriginDeleteInvoiceFileMsg'), 
      function (buttonId, text, opt) { 
       if (buttonId == 'yes') { 
        infoBox.removeAll(); 
        if (invoiceFilePlace > -1) { 
         files.removeAt(invoiceFilePlace); 
        } 

        me.fillInvoiceOriginStep(pagemanager); 

        uploadNoSignBtn.reset(); 
        uploadAndSignBtn.reset(); 
        uploadNoSignBtn.enable(); 
        uploadAndSignBtn.enable(); 
       } 
      }); 
    } 

me file .... 아무 것도 페이지에서 발생하지 않습니다 ... no change 이벤트는 페이지에서 실행되지 않습니다. 그러나 다른 파일을 선택하면 문제가 해결됩니다. ExtJS 문서에서 reset() 함수는 이전 파일 업로드를 지워야한다고 말했지만 도움이되지 않습니다.

어떤 파일이든이 파일 업로드 ExtJS를 만났으며이 문제를 해결할 수 있습니까?

고마워요.

답변

0

내가 시도하고 꽤 잘한 것은 전형적인 JS 형식의 파일을 얻는 것이었다. document.getElementsByName ('[name you given]'); 그리고 실행중인 파일을 완벽하게 업로드했습니다.

희망이 있습니다.