我在前端使用React-native,在我的服务器上使用PHP后端。我需要能够将密码发送到我想从中下载文件的服务器。我正在连接到PHP脚本,如果密码正确,则使用X-SendFile库将文件发回。
目前我正在使用RNFS.downloadFile()来下载和保存文件,但这似乎只适用于GET而不是POST。我希望能够将文件保存到DocumentDirectoryPath。
我目前的代码如下:
await RNFS.downloadFile({
fromUrl: 'http://example.com/myfile.zip',
toFile: RNFS.DocumentDirectoryPath + "/userdata/myfile.zip",
}).promise
我希望能够做到这样的事情:
await RNFS.downloadFile({
method: post,
body: {passcode: "abc123", filename: "myfile.zip"},
fromUrl: 'http://example.com/getfile.php',
toFile: RNFS.DocumentDirectoryPath + "/userdata/myfile.zip",
}).promise
如何更改代码以便将密码作为POST参数传递?
答案 0 :(得分: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 Basic Auth,并在尝试下载文件和使用GET请求时查询其他数据的字符串/标头