我正在尝试开发一个简单的应用程序。此应用程序发布包含图像和一些文本字段的多部分表单数据。我正在使用react-native-image-picker选择图像。我的应用程序运行正常。但是我注意到它没有清除图像。这就是为什么我的应用程序大小不断增加的原因。如果我转到常规> iPhone存储,我可以看到我的应用程序大小增加。
我尝试使用以下代码删除该图像,但是它不起作用。
import RNFetchBlob from 'react-native-fetch-blob';
RNFetchBlob.fs.unlink(imageuri)
.then(() => {
console.log('file deleted!');
});
我认为RnFetchBlob需要实际的文件路径。我的上传函数的代码如下。
upload() {
var new_state = this.state;
var image_array = this.state.imageArray;
var comment = this.state.main_comment;
var new_state = this.state;
new_state.loader_show = !new_state.loader_show;
this.setState(new_state);
navigator.geolocation.getCurrentPosition(position => {
var lat = parseFloat(position.coords.latitude);
var lon = parseFloat(position.coords.longitude);
var new_state = this.state;
new_state.lat = lat;
new_state.lon = lon;
});
var position = "position(" + this.state.lat + "," + this.state.lon + ")";
for (var i = 0; i < image_array.length; i++) {
var file_name = position + "-" + i;
const data = new FormData();
data.append("name", file_name);
data.append("comment", comment); // you can append anyone.
data.append("images", {
uri: image_array[i].uri,
type: "image/jpeg", // or photo.type
name: "testPhotoName"
});
fetch("#####", {
method: "post",
body: data
})
.then(res => {
alert("Successfully uploaded from " + position);
************************* Here I want to Delete the file *******
RNFetchBlob.fs.unlink(image_array[i].uri).then(() => {
console.log("file deleted!");
});
****************************************************************
})
.catch(err => {
// ...
alert(err);
});
}
请注意,我将图像uri存储在我的状态下。我没有本地文件路径。我想在上传完成后使用uri删除图片。
答案 0 :(得分:0)
我解决了我的问题。以下代码对我有用。
var uri = images[i].uri;
var path = uri.split("///").pop();
RNFetchBlob.fs
.unlink(path)
.then(() => {
alert("File deleted");
})
.catch(err => {
alert(err);
});