Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用parse和back4app以及nodejs和express上载和检索图像_Javascript_Node.js_Express_Parse Platform_Back4app - Fatal编程技术网

Javascript 使用parse和back4app以及nodejs和express上载和检索图像

Javascript 使用parse和back4app以及nodejs和express上载和检索图像,javascript,node.js,express,parse-platform,back4app,Javascript,Node.js,Express,Parse Platform,Back4app,也许这是一个已经回答过的问题,但我似乎找不到适合我的正确答案。我看不出我的代码有什么问题 我有一个表格可以上传车辆的详细信息,如路线、价格、车辆图片等。当我获得图像的url时,它不会显示任何内容 这是我用来发布表单的代码 //POST create vehicle app.post('/createVehicle', async function(req, res, next){ const fileData = new Parse.File("VehiclePic",

也许这是一个已经回答过的问题,但我似乎找不到适合我的正确答案。我看不出我的代码有什么问题

我有一个表格可以上传车辆的详细信息,如路线、价格、车辆图片等。当我获得图像的url时,它不会显示任何内容

这是我用来发布表单的代码

 //POST create vehicle
    app.post('/createVehicle', async function(req, res, next){


     const fileData = new Parse.File("VehiclePic", { base64: req.body.VehicleImg }, "image/png");
     console.log(fileData);

    let car = new Car();

    const Vehicle = {
        VehicleImg: fileData,
        Name: req.body.Name,
        description: req.body.description,
        Price: parseInt(req.body.Price),
        Route: req.body.Route,
        PassengerAmount: parseInt(req.body.PassengerAmount)
    }


    try{
        fileData.save().then(saved => {

            car.set('Image', saved);
            car.set('Name', Vehicle.Name);
            car.set('Description', Vehicle.description);
            car.set('Route', Vehicle.Route);
            car.set('Price', Vehicle.Price);
            car.set('PassengerAmount', Vehicle.PassengerAmount);

            console.log("URL vehiculo " + saved.url());
            car.save();

            console.log("El vehiculo ha sido creado con exito!");
        })     

    }catch(error){
        console.error('error ' , error);
    }

    res.redirect('/');

});
我不使用Vehicle.VehicleImg的原因是它返回一个未定义的对象

下面是获取所有数据的代码

const Car = Parse.Object.extend('Vehicle');
const query = new Parse.Query(Car);

app.get('/', async function(req, res) {
const VehicleInfo = [];

query.notEqualTo("objectId", null);
try {
    const result = await query.find();
    result.forEach(vehicle => {
        const vehiclePic = vehicle.get('Image');
        VehicleInfo.push({
            VehicleID: vehicle.id,
            VehicleImage: vehiclePic,
            VehicleName: vehicle.get('Name'),
            Description: vehicle.get('Description'),
            Price: vehicle.get('Price'),
            Rating: vehicle.get('Rating'),
            Route: vehicle.get('Route'),
            PassengerAmount: vehicle.get('PassengerAmount')
        });

    });

    res.render('index', {
        title: 'MainPage',
        VehicleData: VehicleInfo

    });
} catch (error) {
    console.error('error fetching objects', error);
}
});
编辑:这是表单,我正在使用ejs

<div class="createVehicle-section container">
            <br>

            <form method="POST" action="/createVehicle" enctype="multipart/form-data">

                <div id="img">
                    <label for="VehicleImg">Seleccione la imagen:</label>
                    <input type="file" id="VehicleImg" name="VehicleImg" >
                </div>

                <br>

                <div class="col-lg-12 row">
                    <div class="col-md-6">
                        <label for="VehicleName">Nombre del vehiculo</label>
                        <input type="text" id="VehicleName" name="Name">
                        <br>
                        <label for="DescriptionVe">Descripción</label>
                        <input type="text" id="Descriptionve" name="description">
                    </div>          

                    <div class="col-md-6">
                        <label for="PriceVe">Precio</label>
                        <input type="number" id="PriceVe" name="Price" min="0" max="9999">
                        <br>
                        <label for="RouteVe">Ruta</label>
                        <input type="text" id="RouteVe" name="Route">
                    </div>


                </div>
                <br>
                <div class="col-md-6 container">
                    <label for="PassegerAmountVe">Cantidad de Pasajeros Permitida</label>
                    <input type="number" id="PassengerAmountVe" name="PassengerAmount" min="0" max="9999">
                </div>

                <br>
                <div class="text-center">
                    <input class="btn btn-main btn-lg btn-shadow" type="submit" value="Guardar"/>

                </div>

            </form>
            <br>
        </div>

请尝试以下代码:

const upload=multer();
app.post('/createVehicle',upload.single('VehicleImg'),异步函数(req、res、next){
const fileData=new Parse.File(“VehiclePic.png”,[…req.File.buffer],“image/png”);
console.log(文件数据);
出租汽车=新车();
常数车辆={
VehicleImg:fileData,
名称:req.body.Name,
描述:req.body.description,
价格:parseInt(需求主体价格),
路线:req.body.Route,
PassengerAmount:parseInt(请求主体PassengerAmount)
}
试一试{
fileData.save().then(saved=>{
car.set('图像',已保存);
车辆组(“名称”,车辆名称);
车辆组(“说明”,车辆说明);
车辆设置(“路线”,车辆路线);
car.set(“价格”,车辆价格);
car.set('PassengerAmount',Vehicle.PassengerAmount);
console.log(“URL vehiculo”+saved.URL());
car.save();
控制台日志(“El vehiculo ha sido creado con exito!”);
})     
}捕获(错误){
console.error('error',error);
}
res.redirect('/');
});

您能在
req.body.VehicleImg
查看您拥有的数据类型吗?是真的吗?另外,在保存文件时,尝试将扩展名添加到文件名中。它表示它是一个字符串。我不知道它是否有用,但在我的表单中,我没有添加enctype=“multipart/form data”,如果我添加它说它无法解析该数据,因为它看起来未定义。你能分享你表单的代码吗?完成了,希望这能在某种程度上有所帮助。你有处理多部分表单数据的中间件吗?您将需要类似或(节点:59536)的未处理PromisejectionWarning:TypeError:无法使用该数据创建Parse.File。我做了console.log(req.file.buffer),这就是它显示的内容,我刚刚更新了答案。尝试
constfiledata=new Parse.File(“VehiclePic.png”、[…req.File.buffer]、“image/png”)谢谢,先生,现在它工作得很好,[…]是什么意思或作用?它基本上将缓冲区转换为字节数组(这是Parse JS SDK希望接收的格式)。
//Multer Image Storage 
const storage = multer.diskStorage({
    destination: './public/images/',
    filename: function(req, file, cb){ //cb = callback
         cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
    }
});
// Init Upload
const upload = multer({
    storage: storage,
    limits:{fieldSize: 1000000},
    fileFilter: function(req, file, cb){
        checkFileType(file, cb);
    }
}).single('VehicleImg');