رسول آذری پور
4 سال پیش توسط رسول آذری پور مطرح شد
3 پاسخ

آپلود ویدئو در react native

سلام
اگه بخوام فیلم گرفته شده با گوشی را اپلود کنم ، باید قبل از ارسال حجمش را کم کنم و یا بعد از ارسال به سرور؟

نرم افزاری مثل واتساپ قبل از ارسال کم میکنه و یا بعدش؟

و اینکه چطوری فیلم انتخاب شده را اپلود کنم؟
من با کد زیر فیلم را انتخاب و ارسال میکنم سمت سرور


import React from 'react';
import {StyleSheet, Text, View, Button, Image} from 'react-native';
import ImagePicker from 'react-native-image-picker';
const options2 = {
  title: 'Select video',
  mediaType: 'sound',
  path: 'video',
  quality: 1,
  skipBackup: true,
};
export default class Send extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      videoSource: '',
    };
  }

  snedfile = async () => {
    try {
      await fetch('http://192.168.10.190/mehad/api/app/send_App_Send_Taklif', {
        method: 'post',
        mode: 'no-cors',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          ContentType: 'video1',
          dt: '',
          FileExt: '',
          FileName: '1.mp4',
          pfile: this.state.videoSource,
        }),
      });
      alert('fff');
    } catch (e) {
      alert(e);
    }
  };

  chooseFile = () => {
    var options = {
      mediaType: 'video',

      title: 'Select Image',
      width: 20,
      height: 30,
      isVideo: true,
      customButtons: [
        {name: 'customOptionKey', title: 'Choose Photo from Custom Option'},
      ],
      storageOptions: {
        skipBackup: true,
        path: 'images',
      },
    };
    ImagePicker.showImagePicker(options2, response => {

      console.log('Response = ', response);

      if (response.didCancel) {
        console.log('User cancelled image picker');
      } else if (response.error) {
        console.log('ImagePicker Error: ', response.error);
      } else if (response.customButton) {
        console.log('User tapped custom button: ', response.customButton);
      } else {
        const source = {uri: response.uri};

        this.setState({videoSource: source});
      }
    });
  };
  render() {
    return (
      <View style={styles.container}>
        <View style={styles.container}>
          <Button title="Choose File" onPress={this.chooseFile.bind(this)} />
          <Button title="send file" onPress={() => this.snedfile()} />
        </View>
      </View>
    );
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
  ico: {
    fontSize: 50,
  },
  backgroundVideo: {
    position: 'absolute',
    top: 0,
    left: 0,
    bottom: 0,
    right: 0,
  },
});

این کد با عکس مشکلی نداره و تصویر را توی دیتابیس سرور ذخیره میکنه ولی اگه ویدئو انتخاب کنم رکورد خالی ثبت میشه

ثبت پرسش جدید
سهیل حیدری
@hbr 4 سال پیش مطرح شد
0

@rasoulazary
سلام شما وقتی که فیلم یا فایل یا تصویر رو بارگذاری میکنید تو اپ به شکل base64 هستش اینو وقتی از imagepicker یا documentpicker استفاده میکنید هستش و این فایلی که به صورت base64 هست(که به صورت رشته می باشد) رو post میکنید به سمت سرور و در سمت سرور همه زبان های سمت سرور دارند تبدیل base64 به فایل رو خلاصه تبدیل میکنید به فایل و ذخیره میکنید تو سرور و اسم اون فایل رو میریزید داخل فیلد مربوط به فایل.


سهیل حیدری
@hbr 4 سال پیش مطرح شد
0

@rasoulazary
داخل همین response.uri فک کنم اون base64 باشه و شما همینو میاین پست میکنید به سمت سرور اونجا base64 رو تبدیل به فایل میکنید و برای فشرده سازی هم معمولا تو زبانی که برای بک اند استفاده میکنید روش هایی هست که میتونید با یک سرچ پیدا کنید.


رسول آذری پور
@rasoulazary 4 سال پیش مطرح شد
0

ممنون
مشکل اینه که وقتی ویدئو را انتخاب میکنیم چون حجم دیتای اون زیاده داخل state وارد نمیشه

چیزی که سرچ کردم باید برای آپلود فایل های سیگین از کتابخونه react-native-background-upload' استفاده کرد.

از دوستان اگه کسی با این کتابخونه وسمت سرور با دات نت بلده کار کنه لطفا پیام بده.
یه قسمت از برنامه را میخوام کمک کنه بنویسم.
هزینه ش را هم پرداخت میکنم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام