繁体   English   中英

将空文件发送到服务器React-Native

[英]sending empty files to server React-Native

我正在尝试使用带有multer的NodeJS将JSON文件发送到服务器,我能够发送文件,但文件是空的。

我正在使用React-native-File-System来遍历文件夹中存在的所有文件

我没有收到任何错误,文件上传日志也显示为UPLOAD COMPLETED但文件为空

我试图用表格数据发送它,但仍然没有运气

        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';

要么

 var path = RNFS.DocumentDirectoryPath + '/test.txt';

你可以看看这些。

https://github.com/itinance/react-native-fs#examples

https://github.com/itinance/react-native-fs#constants

在iOS上工作而不是在Android上工作

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)
       });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM