2017-12-27 25 views
1

프런트 엔드에 React-native를 사용하고 있습니다. 서버에서 PHP 백엔드를 사용하고 있습니다. 파일을 다운로드하려는 서버에 암호를 보낼 수 있어야합니다. 패스 코드가 맞으면 X-SendFile 라이브러리를 사용하여 파일을 다시 보내는 PHP 스크립트에 연결하고 있습니다.React Native에서 POST 메서드를 사용하여 이진 파일 다운로드

현재 RNFS.downloadFile()을 사용하여 파일을 다운로드하고 저장하고 있지만 POST를 사용하지 않고 GET에서만 작동하는 것으로 보입니다. DocumentDirectoryPath에 파일을 저장할 수 있기를 원합니다.

나의 현재 코드는 다음과 같습니다가 암호 등을 통과하도록

await RNFS.downloadFile({ 
    method: post, 
    body: {passcode: "abc123", filename: "myfile.zip"}, 
    fromUrl: 'http://example.com/getfile.php', 
    toFile: RNFS.DocumentDirectoryPath + "/userdata/myfile.zip", 
}).promise 

내 코드를 변경할 수있는 방법 :이 같은 일을 할 수 있도록하고 싶습니다

await RNFS.downloadFile({ 
    fromUrl: 'http://example.com/myfile.zip', 
    toFile: RNFS.DocumentDirectoryPath + "/userdata/myfile.zip", 
}).promise 

POST 매개 변수?

+0

사용 설명서 https://github.com/itinance/react-native-fs - RNFS.uploadFiles ({method : post .... not RNFS.downloadFile ({method : post ...)}를 참조하십시오. 파일을 업로드하는 경우 –

답변

2

다음 파일에서 볼 수 있듯이, 58 ~ 70 행의 react-native-fs는 사용자가 성취하려는 것을 지원하지 않습니다.

FS.common.js @ react-native-fs github page

그러나, 당신을 도울 수있는 다른 라이브러리가 있습니다. react-native-fetch-blob은 다음 형식으로 달성하려는 것을 지원합니다.

RNFetchBlob 
.config({ 
    path : RNFetchBlob.fs.DocumentDir + '/userdata/myfile.zip' 
}) 
.fetch(
    'POST', 
    'http://example.com/myfile.zip', 
    { 
    //headers... 
    }, 
    JSON.stringify({ 
    //request body... 
    passcode: "abc123", 
    filename: "myfile.zip" 
    }), 
) 
.then((res) => { 
    console.log('The file saved to ', res.path()) 
}) 

가이 방식으로 작동해야하지만 파일 및 사용을 다운로드하는 동안, 나는 당신이이 리조트 및 HTTP 기본 인증 및 쿼리 문자열/기타 데이터를 헤더로 인증에 대한 인증 스키마를 사용하지 좋을 걸 GET 요청.

+0

감사합니다. 각 파일에는 고유 한 암호가 있습니다. 암호는 데이터베이스의 파일 테이블에 저장됩니다.이 경우에도 HTTP 기본 인증을 권장 하시겠습니까? – kojow7

+0

예. 데이터를 귀하의 필요에 맞게 –

+0

요청 본문 섹션에서 JSON.stringify를 사용하지 않으면 어떤 이유로 작동하지 않습니다. "TypeError : 예상되는 동적 유형 'string'이지만 'object'유형 (인수 구성 RNFetchBlob.fetchBlob for argument index 5) .fetch 함수에 인수가 4 개있는 경우 인수 인덱스가 5라고 말하는 이유가 확실하지 않습니다. 일단 JSON.string화한 후, 그것은 작동하지만, 지금은 0 바이트 파일을 받고있는 것 같습니다. 왜 내가 오류를 얻지 못하고 있는지 확실하지 않습니다. 또한 URL은 PHP 주소 여야합니다. – kojow7