React-native expo FileSystem.downloadAsyn c поврежденные изображения - PullRequest
1 голос
/ 05 февраля 2020

У нас есть приложение RN и сервер для хранения изображений.

Попытка загрузить групповые изображения с сервера в соответствии с пользователем и отобразить их в приложении RN.

Иногда изображения будут поврежден или не отображается вообще, поэтому мне нужно перезагрузить приложение, чтобы оно работало (это даже не будет работать большую часть времени), или очистить хранилище и загружать изображения снова и снова.

Эта одна из функций для загрузки:

  downloadItemsImgs = async() => {
const {items, u_clname} = this.state

for (let [key, value] of Object.entries(items)) {
  let imgPath = FileSystem.documentDirectory + value.item_img;
  let imgName = value.item_img;

  await FileSystem.getInfoAsync(imgPath).then(file => {
    if (file.exists === false) {

      try {
          FileSystem.downloadAsync(
          'https://servernamehere.com/uploads/' + u_clname +'/' + imgName, imgPath
        )
      }
      catch (error) {
        alert(error);
      }
    }
  })
}
 }

и это функция выхода:

outPutItems = (id) => {
let fileSystemPath = FileSystem.documentDirectory;
let output = [];
const {items} = this.state
for (let [key, value] of Object.entries(items)) {

  if (value.group_id === id) {
    output.push(
      <Card 
        style={styles.itemCard}
        key={value.item_id}
      >
          <CardItem 
            cardBody
            button
            activeOpacity={0.5} 
            onPress={() => {
              this.goOneItem(value.item_id, value.item_name, value.group_id);
            }}
          >
            <ImageBackground 
              source={{uri: `${fileSystemPath}${value.item_img}`}} 
              style={{height: 250, width: null, flex: 1}}
            >
              <View style={[styles.itemTextContainer, {flexDirection: "column"}]}>
                <View style={[styles.itemPriceText]}>
                  <Text style={styles.itemText}>{value.item_name}</Text>
                </View>
                <View style={{ flexDirection: "row", justifyContent: "space-between", alignItems: "center", width: "100%", padding: 4,}}>
                  <Text style={styles.priceText}>{value.item_price} AED</Text>
                </View>
              </View>
            </ImageBackground>
          </CardItem>
      </Card>
    )
  }
}
return output;
}

Примечание: я пытался загрузить в нескольких сетях (я думал, что это может быть проблема, связанная с сетью), но все та же проблема.

У меня уходит много времени, чтобы выяснить, в чем проблема, из функций загрузки или из вывода !!?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...