2016-12-03 4 views
1

FileTransfer Cordova 플러그인 (https://github.com/apache/cordova-plugin-file-transfer)의 업로드 방법을 사용하여 파일을 업로드하려고합니다. 마지막으로 프로젝트 페이지에서 언급 한 예제를 거의 복사했지만 성공하지 못했습니다.이 메서드는 성공 콜백 함수를 실행하지만 대상 스크립트는 파일이나 매개 변수를받지 않습니다. 내 코드는 다음과 같습니다Cordova FileTransfer로 파일을 업로드 할 수 없습니다.

호출 기능 :

var fleNme = TOP_APP_DIR + "/config/config.json"; 

fileAPI.readFile(fleNme, function (data) { 
    console.log("File content: " + data); // just to meake sure the file exists and it contains some data 

    fileAPI.uploadFile("http://posttestserver.com/post.php", fleNme, { par1: "test", par2: "test2" }, null, function (r) { 
      console.log("Successful upload..."); 
      console.log(JSON.stringify(r)); 
    }); 
}); 

업로드 기능 : 내 콘솔

fileAPI.uploadFile = function (url, filePath, params, progressFunc, successCallback, failCallback, FStype) { 
    if (typeof failCallback === "undefined" || failCallback === null) 
     failCallback = fileAPI.defaultErrorCallback; 

    // getFileEntry method is used for reading the file before call the upload method, so it's OK 
    fileAPI.getFileEntry(filePath, function (fileEntry) { 
     var fileURL = fileEntry.toURL(); 

     var options = new FileUploadOptions(); 
     options.fileKey = "file"; 
     options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1); 
     options.mimeType = "text/plain"; 
     options.httpMethod = "POST"; 

     if(typeof params === "undefined" || params === null) 
      params = {}; 

     options.params = params; 

     var ft = new FileTransfer(); 

     ft.upload(fileURL, encodeURI(url), successCallback, failCallback, options); 
    }, failCallback,FStype,false); 
}; 

출력은 다음과 같습니다

  • 파일 내용 : { "버전": 9, "타임 스탬프": 1480793843086, "언어": "cs"........
  • 업로드 성공 ...
  • { "응답": " . nPost 본체 0 문자 길었다 \ http://www.posttestserver.com/data/2016/12/03/11.41.062096548295에서 포스트 변수 \에 nView를 ","응답 코드. "200"OBJECTID는 ":" ","bytesSent는 "posttestserver.com에서 522}

로그 인 :

Time: Sat, 03 Dec 16 11:41:06 -0800 
Source ip: 31.30.45.209 

Headers (Some may be inserted by server) 
REQUEST_URI = /post.php 
QUERY_STRING = 
REQUEST_METHOD = POST 
GATEWAY_INTERFACE = CGI/1.1 
REMOTE_PORT = 48730 
REMOTE_ADDR = 31.30.45.209 
HTTP_ACCEPT_ENCODING = gzip 
HTTP_CONNECTION = close 
HTTP_HOST = posttestserver.com 
HTTP_USER_AGENT = Dalvik/1.6.0 (Linux; U; Android 4.4.2; SM-T320  Build/KOT49H) 
CONTENT_TYPE = multipart/form-data; boundary=+++++ 
UNIQUE_ID = WEMf0kBaMGUAAFmEWtgAAAAK 
REQUEST_TIME_FLOAT = 1480794066.2475 
REQUEST_TIME = 1480794066 

No Post Params. 
Empty post body. 

== Multipart File upload. == 
Received 0 file(s) 

대상 Cordova CLI 6.1.1. 나는 하루 종일 다른 접근법을 시도했지만, 항상 같은 결과를 얻었습니다. HTC 10, 삼성 Galaxy Tab SM-T320 및 이전의 Prestigio 휴대 전화와 같은 3 가지 안드로이드 기기에서 코드를 디버깅했습니다. 동일한 결과를 보았습니다. 어떤 생각이 잘못된거야?

+0

'options.chunkedMode = false'를 추가하여 도움이되는지 확인해보십시오. –

+0

위대한 작품! 감사. 당신이 대답으로 쓰는 경우에, 나는 그것을 표시 할 것입니다. – user3523426

+0

답변으로 추가되었습니다. :-) 다행스러워. 곧 새로운 플러그인 드롭을 찾아보십시오. chunkedMode를 true로 설정하여 문제를 해결하는지 확인해보십시오. –

답변

0

기본 설정이 chunkedMode (즉, true) 인 경우 많은 문제가 발생했습니다. options.chunckedMode = false으로 전환하면 문제를 해결하는 데 도움이됩니다.