1

我正在尝试通过选项,但不知道如何在服务器端处理它们。文件加载没有问题。我创建了一个表格:

webix.ui({
    view: "form",
    borderless: true,
    elements: [
        {view: "text", label: 'User', name: "user",invalidMessage:"User can not be empty"},
        {view: "text", label: 'Name', name: "name",invalidMessage:"Name can not be empty"},
        {view: "text", label: 'Email', name: "email",invalidMessage:"Incorrect e-mail address"},
        {view: "text", label: 'Key', name: "key",invalidMessage:"Key can not be empty"},
        {
            view:"uploader",
            id: "fileUploader",
            value:"Upload key",
            autosend:false,
            upload:"api/upload"
        },
        {
            view: "button", value: "Submit", click: function () {
            var form = this.getParentView();
                if (form.validate()){

                    var values = this.getParentView().getValues();

                    $$('fileUploader').send(function(res){

                    },{
                        fileName:values.user
                    });
                }
            }
        }
    ],
    rules:{
        "user": webix.rules.isNotEmpty,
        "name": webix.rules.isNotEmpty,
        "email": webix.rules.isEmail,
        "key": webix.rules.isNotEmpty
    },
    elementsConfig: {
        labelPosition: "top"
    }
});

我正在使用服务器 node.js

app.post('/api/upload/', function(req,res) {

    fs.readFile(req.file.path, function (err, data) {
        var newPath = __dirname + "/uploads/"+req.file.originalname;
        fs.writeFile(newPath, data, function (err) {
            res.send("ok");
            fs.unlink( __dirname + "/uploads/"+req.file.filename);

        });
    });
}
);

或者是否有任何选项可以在 send() 之前更改名称?

4

2 回答 2

0

我试图在发送文件之前更改名称,但不能。

所以:

function renameFile(req, res)
{
    var name = post.name;
    var type = post.type
    fs.rename(__dirname+'/'+name, __dirname+'/'+createStringDate(name), function(err) {
        if ( err ) 
        {
            console.log("!!!***LOG_:renameFile-Error(500): ".red+err);
            res.status(500).json(err);
        }
        else
        {
            console.log("***LOG_:renameFile-Respuesta(200): Archivo renombrado.".magenta);
            res.status(200).json("Estatus:Ok");
        }
    });
};
function createStringDate()
{
  //create string date
  return "yyyymmdd"
}

JS 文件必须保存在您保存文档的文件夹中。

于 2015-10-29T14:26:45.040 回答
0

文件名只读不能更改 https://developer.mozilla.org/en-US/docs/Web/API/File

您的服务器端代码可以优化,而不是 fs.readFile、fs.writeFile、fs.unlink 为什么不使用 fs.rename。将上传的文件移动到正确名称和位置的单个命令。

于 2015-10-16T14:47:03.393 回答