Javascript 将空文件发送到服务器
我正在尝试使用NodeJS和multer向服务器发送JSON文件,我能够发送文件,但文件是空的 我正在使用React本机文件系统循环浏览文件夹中的所有文件 我没有收到任何错误,文件上传日志也显示为上传完成,但文件是空的 我试着把它和表单数据一起发送,但还是没有成功Javascript 将空文件发送到服务器,javascript,reactjs,react-native,file-upload,multer,Javascript,Reactjs,React Native,File Upload,Multer,我正在尝试使用NodeJS和multer向服务器发送JSON文件,我能够发送文件,但文件是空的 我正在使用React本机文件系统循环浏览文件夹中的所有文件 我没有收到任何错误,文件上传日志也显示为上传完成,但文件是空的 我试着把它和表单数据一起发送,但还是没有成功 var RNFS = require('react-native-fs'); var path = RNFS.DocumentDirectoryPath + '/toBeSynced';
var RNFS = require('react-native-fs');
var path = RNFS.DocumentDirectoryPath + '/toBeSynced';
RNFS.readDir(path)
.then((success) => {
success.forEach(function (element) {
var fileName = element.name
var filePath = element.path
const options = {
url: 'http://192.168.1.15:3333/SurveyJsonFiles/GetFiles',
path: filePath,
name: fileName,
field: 'files',
method: 'POST',
type: 'multipart',
headers: {
'content-type': 'multipart/form-data',
},
//Below are options only supported on Android
notification: {
enabled: true
}
}
Upload.startUpload(options).then((uploadId) => {
console.log('Upload started')
Upload.addListener('progress', uploadId, (data) => {
console.log(`Progress: ${data.progress}%`)
})
Upload.addListener('error', uploadId, (data) => {
console.log(`Error: ${data.error}%`)
})
Upload.addListener('cancelled', uploadId, (data) => {
console.log(`cancelled: ${data.error}%`)
})
Upload.addListener('completed', uploadId, (data) => {
// data includes responseCode: number and responseBody: Object
console.log('Completed!')
})
}).catch((err) => {
console.log('Upload error!', err)
})
});
})
.catch((err) => {
console.log(err.message);
});
}
您的路径不是绝对文件项路径。 如果您有很多文件,请添加此代码
var files = [
{
name: 'test1',
filename: 'test1.w4a',
filepath: RNFS.DocumentDirectoryPath + '/test1.w4a',
filetype: 'audio/x-m4a'
}, {
name: 'test2',
filename: 'test2.w4a',
filepath: RNFS.DocumentDirectoryPath + '/test2.w4a',
filetype: 'audio/x-m4a'
}
];
如果只有一个文件,请按如下方式添加
var path = RNFS.DocumentDirectoryPath + '/toBeSynced/test.txt';
或
你可以看看这些。错误发生在服务器端,因为nodemon在获取新文件时正在重新启动服务器
const data = new FormData();
data.append('files', {
uri: filePath,
type: 'multipart/form-data',
name: fileName,
});
const config = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
body: data,
};
fetch(uploadUrl, config)
.then((checkStatusAndGetJSONResponse) => {
console.log(checkStatusAndGetJSONResponse);
}).catch((err) => {
console.log(err)
});
日志是什么样子的?日志没有显示任何错误,只显示“进度100%上载完成”,但文件是空的,可以用于重现问题的git repo?很遗憾,没有。但我提到了一个示例()您确定选择了文件吗?你能写关于所选文件的日志吗?这些文件正在被选中,它们也正在被发送到服务器,但是这些文件不包含数据,因为它们包含mobileCheck上的数据。检查你的文件是否为空?我已检查,这些文件包含数据。上载日志已开始!作业ID:1上传完成1%!上传是100%完成!文件上传!
const data = new FormData();
data.append('files', {
uri: filePath,
type: 'multipart/form-data',
name: fileName,
});
const config = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'multipart/form-data',
},
body: data,
};
fetch(uploadUrl, config)
.then((checkStatusAndGetJSONResponse) => {
console.log(checkStatusAndGetJSONResponse);
}).catch((err) => {
console.log(err)
});