bootstrap krajee fileinput从输入字段

时间:2015-05-10 19:01:47

标签: javascript twitter-bootstrap plugins

我正在使用bootstrap krajee fileinput插件将videofile上传到服务器。这工作正常,但问题是我想用它发送额外的数据,更具体地说是视频名称。这是我的代码:

$(document).ready(function() {
var name = "";
$("#videofile").fileinput({
    uploadUrl: "public/php/videos/upload",
    uploadAsync: true,
    maxFileCount: 1,
    allowedFileExtensions: ["mp4", "avi", "ogg", "wmv", "flv"],
    maxFileSize: 50000,
    elErrorContainer: "#error",
    previewFileType: "video",
    browseLabel: "Select video",
    browseClass: "btn btn-success",
    initialCaption: "upload your videos!",
    uploadExtraData: {videoname: name}
    });
$('#videofile').on('fileuploaded', function(event, data, previewId, index) {
    var form = data.form,
        files = data.files,
        extra = data.extra,
        response = data.response,
        reader = data.reader;
    console.log(response);
});
$('#videofile').on('filepreupload', function() {
    name = $("#videoname").val();
});
})

如果我在uploadExtraData中发送videoname: "videoname",它可以正常工作,但是当我尝试从输入字段中获取它时,它不会发送任何内容。我已经在filepreupload函数中检查了name变量是否正确以及它是否在上传之前启动。如果有人知道怎么解决这个问题,我真的很感激帮助。

3 个答案:

答案 0 :(得分:2)

在上传发生之前,您必须将其添加为附加输入参数。

当您在预览窗口中按下单个文件上的上传按钮时,将触发此操作:

$('#videofile').on('filepreupload', function(event, data, previewId, index, jqXHR) {
    data.form.append("videoname", "your_video_name_here");
});

按下上传按钮上传每个选定的文件时会触发此操作:

$('#videofile').on('filebatchpreupload', function(event, data, jqXHR) {
    data.form = {"videoname": "your_video_name_here"};
});

根据你的uploadExtraData参数,试试这个:

uploadExtraData: {"videoname": "name"}

如果需要,您还可以添加其他http标头:

$("#videofile").fileinput({
    ajaxSettings: {
        beforeSend: function(xhr){xhr.setRequestHeader('new_header', 'new_header_Value');},
    },
});

答案 1 :(得分:1)

我使用了相同的但是没有用

$('#videofile').on('filebatchpreupload', function(event, data, jqXHR) {
data.form = {"videoname": "your_video_name_here"};
});

您可以使用它而不是

$('#videofile').on('filebatchpreupload', function(event, data, jqXHR) {
data.form.append('videoname',  $("#videoname").val());
};

然后你必须在代码的第一个

中删除它
uploadExtraData: {videoname: name}

答案 2 :(得分:0)

您可以使用您的代码,但需要进行一些编辑:

$('#videofile').on('filepreupload', function (event, data, previewId, index) {
    data.form.append('videoname', $("#videoname").val());
});

您可以删除' uploadExtraData'或者您可以使用它来发送任何静态数据。

uploadExtraData: {
'static_variable_1': 'static_value_1',
'static_variable_2': 'static_value_2'
}