通过Ajax将文件从javascript发送到Python

通过Ajax将文件从javascript发送到Python,javascript,jquery,python,ajax,Javascript,Jquery,Python,Ajax,通过ajax调用向python发送文件对象时遇到问题。 我使用的只是我的“文件上传器界面”,当按下某个按钮时,我会发送一个调用 在python中,当我试图处理该文件时,它会说,“'str'对象没有'seek'属性” 我的JS代码: ... window.$form_add_file = $("#form_add_file"); var file = dropzone.files[0]; ... var formData = $form_add_file.serializeArray(); i

通过ajax调用向python发送文件对象时遇到问题。
我使用的只是我的“文件上传器界面”,当按下某个按钮时,我会发送一个调用

在python中,当我试图处理该文件时,它会说,“'str'对象没有'seek'属性”

我的JS代码:

...
window.$form_add_file = $("#form_add_file");
var file = dropzone.files[0];
...

var formData = $form_add_file.serializeArray();

if(file){

    $modal_add_file.find($drop_add_file).removeClass("error");

    var filetype = file.type.split("/")[0].toLowerCase();
    var hasFile = checkFileType(filetype);
    if(!hasFile) { filetype = "file" }

    formData.push(
        { name: "file", value: file },
        { name: "file_type", value: filetype },
        { name: "file_name", value: file.name },
        { name: "file_size", value: file.size }
    );

} else {
    error = true;
    $modal_add_file.find($drop_add_file).addClass("error");
    return false;
}

if(!error){
    $.ajax({
        method: "POST",
        url: host + "json.references.new",
        data: formData,
        cache: false,
        dataType: 'json',
        success: function(data){
            if(data){
                if(data.error){
                    modalMessage($modal_add_file, data.error, "ok");
                } else {
                    refreshData(data);
                }
            }
        },
        error: function(error){
            modalMessage($modal_add_file, oops_message, "ok");
        }
    });
}
我的Python代码:

try:

    file_path = os.path.join(path, file_name)
    temp_file_path = file_path + '~'
    file.seek(0) # error happen here
    with open(temp_file_path, 'wb') as output_file:
        shutil.copyfileobj(file, output_file)
    os.rename(temp_file_path, file_path)
我一直在网上搜索,但什么也没找到

对不起,英语不好


提前谢谢

seek
是用于文件对象而不是字符串的方法

我认为您的代码段缺少一些行,但是如果
file
应该是
file\u path
指向的文件,那么您应该首先使用
file=open(file\u path,'rb')
打开该文件。新文件对象应该从第0个位置开始读取,因此不需要
file.seek(0)