سلام استاد
من به وسیله کد زیر میخوام فایل آپلود کنم
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 ذخیره میکنم
قبلا انجام دادم نتیجه نداد.
اپلود فایل را با کتابخانه 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);
}
};
خیلی ممنونم که به اشتراک گذاشتی
موفق باشی