如何使用formdata上传图像文件

时间:2017-09-25 08:00:48

标签: javascript jquery python django django-rest-framework

我的代码有问题。我想通过使用formdata和ajax上传图像文件到服务器端python程序。但是我的服务器uwsgi.log中出现了django.utils.datastructures.MultiValueDictKeyError:“'image'”错误。我认为它可能无法将图像文件上传到服务器,但我不明白我的代码有什么问题。

我的客户端代码如下。

function imageFileUploader(imageType, image) {

    var credentials = {
        filetype: imageType,
    };
    var image_file = image;

    $.ajax({
        url: HOST_NAME + "user/api/get_filename/",
        type: 'GET',
        dataType: 'json',
        data: credentials,
        timeout: 10000,
    })

    .done(function (data) {

        jsondata = JSON.parse(data);
        image_file_name = jsondata.fileurl;

        // Test if the image is shown -> success
        document.getElementById("previewimage").src = image

        var formData = new FormData();
        formData.append('filename', image_file_name);
        formData.append('image', image);

        $.ajax({
            url: HOST_NAME + "user/api/file_uploader/",
            type: 'POST',
                timeout: 10000,
                data: formData,
                processData: false,
                contentType: false,
        })
        .done(function (data) {
            jsondata = JSON.parse(data);
            alert("File upload completed...");
        })
        .fail(function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        })
    .fail(function (XMLHttpRequest, textStatus, errorThrown) {
        alert(textStatus);
    })

}

function snapPicture () {

    navigator.camera.getPicture (onSuccess, onFail,
        {quality: 50, destinationType: Camera.DestinationType.FILE_URI, 
        saveToPhotoAlbum: true});

    function onSuccess (imageURI) {

        var file_name = imageFileUploader("T", imageURI);
        if (file_name == "") {
            console.log("False");
        }
        else {
            image_send(file_name);
        }
    }

    function onFail (message) {
        console.log("False");
    }
}

我的服务器端代码如下。

def post(self, request, format=None):
    outputLogFile("Upload Function is called...")
    req_file_name = request.data['filename']
    req_image = request.FILES['image']

当我评论图像代码时,我可以从客户端获取文件名。请给我一个建议。

0 个答案:

没有答案