• 1401/05/14

خطای Socket closed هنگام آپلود فایل :

سلام استاد

من به وسیله کد زیر میخوام فایل آپلود کنم

 const UpLoad = async () => {
    var RNFS = require('react-native-fs');

    const split = fileaddress.split('/');
    const name = split.pop();
    const setFileName = 'Img';
    const inbox = split.pop();
    const realPath = `${RNFS.TemporaryDirectoryPath}${inbox}/${name}`;
   
    var uploadUrl = 'http://192.168.100.5:7575/api/app/post4';
    var files = [
      {
        name: 'test1',
        filename: 'test1.w4a',
        filepath: realPath,
        filetype: 'audio/x-m4a',
      },
    ];

    var upload = response => {
      var jobId = response.jobId;
      console.log('UPLOAD HAS BEGUN! JobId: ' + jobId);
    };

    var uploadProgress = response => {
      var percentage = Math.floor(
        (response.totalBytesSent / response.totalBytesExpectedToSend) * 100,
      );
      console.log('UPLOAD IS ' + percentage + '% DONE!');
    };

    // upload files
    RNFS.uploadFiles({
      toUrl: uploadUrl,
      files: files,
      method: 'POST',
      headers: {
        Accept: 'application/json',
      },
      // fields: {
      //   id: 'world',
      // },

      // begin: uploadBegin,
      progress: uploadProgress,
    })
      .promise.then(response => {
        if (response.statusCode == 200) {
          console.log('FILES UPLOADED!'); // response.statusCode, response.headers, response.body
        } else {
          console.log('SERVER ERROR');
        }
      })
      .catch(err => {
        // alert(err);
        if (err.description === 'cancelled') {
          // cancelled by user
        }
        console.log(err);
      });
  };

ولی خطای [Error: Socket closed] نمایش میده.

من فایل را با کتابخانه react-native-document-picker اسنتخاب میکنم و uri اون را توی fileaddress ذخیره میکنم

 

  • 1401/05/16
  • ساعت 01:11

سلام دوست من

راهکاری که در این لینک پیشنهاد شده رو تست کن ببین عمل میکنه


  • 1401/05/16
  • ساعت 14:45

قبلا انجام دادم نتیجه نداد.

اپلود فایل را با کتابخانه rn-fetch-blob انجام دادم

سورس کد را میزارم کسی اگه نیاز داشت استفاده کنه

در ابتدا به وسیه کتابخانه react-native-document-picker  فایل را انتخاب میکنیم

const filepicker = async () => {
    try {
      const res = await DocumentPicker.pick({
        type: [
          DocumentPicker.types.images,
          DocumentPicker.types.pdf,
          DocumentPicker.types.audio,
          DocumentPicker.types.video,
        ],
      });
      console.log(
        res[0].uri,
        res[0].type, // mime type
        res[0].name,
        res[0].size,
      );
      setFiletype(res[0].type);
      setFileaddress(res[0].uri);
      setFilename(res[0].name);
    } catch (err) {
      if (DocumentPicker.isCancel(err)) {
        alert('canceled');
      } else {
        alert(err);
      }
    }
  };

و بعد به وسیاه کتابخانه  rn-fetch-blob آپلودمیکنیم

 const upload = async () => {
    try {
      RNFetchBlob.fetch(
        'POST',
       
        'http://192.168.1.100:7575/api/app/post2',
        {
          Authorization: 'Bearer access-token',
          otherHeader: 'foo',
          'Content-Type': 'multipart/form-data',
        },
        [
          {
            name: filename,
            filename: filename,
            type: filetype,
            data: RNFetchBlob.wrap(fileaddress),
          },
        ],
      )
        .then(resp => {
          alert(resp);
        })
        .catch(err => {
          alert(err);
        });
    } catch (error) {
      alert(error);
    }
  };

  • 1401/05/20
  • ساعت 00:14

خیلی ممنونم که به اشتراک گذاشتی

موفق باشی


logo-samandehi