2015-08-24 3 views
0

Я пытаюсь вернуть URL-адрес загруженного изображения и сделать его равным uploadedurl. Это все в функции, которая запускается, когда фото выгружается в поле для загрузки. uploadedurl в настоящее время устанавливается в null и возвращает эту ошибку The provided value 'undefined' is not a valid enum value of type XMLHttpRequestResponseType. в клиентской консоли. Я использую amazon S3 для хранения изображений. Эта часть работает с изображениями, хранящимися в S3, и у них есть полезные URL-адреса в домене. Что я сделал не так?Использование CollectionFS как вернуть URL-адрес изображения после загрузки?

var user = Meteor.user(); 
var uploadedurl; 

Images.insert(newFile, function (error, fileObj) { 
       if (error) { 
        //do error 
       } else { 
        fileObj.once("uploaded", function() { 
        uploadedurl=fileObj.url(); 
        document.getElementById("phototag").innerHTML = '<img src=&quot'+uploadedurl+'&quot >'; 
        }); 
       } 
      }); 
     }); 
    }, 

ответ

0

Объекты CollectionFS включают в себя метод url(). В вашем случае используйте:

fileObj.url(); 

Обратите внимание, что для завершения загрузки файлов может потребоваться некоторое время. fileObj.isUploaded() будет правдой, когда загрузка будет выполнена. fileObj.url() будет пустым до этого времени.

В this github ticket @aldeed упоминает прикрепление обработчика события к файлуObj, чтобы иметь возможность получить обратный вызов после загрузки файла. Это лучше, чем опрос с помощью setTimeout. В вашем случае:

fileObj.once("uploaded", function() { 
    uploadedurl=fileObj.url(); 
}); 
+0

Посмотрите на 'fileObj' в отладчик и проверить его содержимое. Я не уверен, что '.url()' должен ждать, пока '.uploaded' будет true. –

+0

С консоли do 'Images.findOne(). Url()' и убедитесь, что ваши существующие изображения имеют URL-адрес. –

+0

Извините, это '.uploaded()' - метод объекта файла, а не ключ. –

0

попробовать this..It работал для меня

FS.Utility.eachFile(event, function(file) { 

Images.insert(file, function(err, fileObj) { 
    if (err) { 
     console.log(err); 
    } else { 
     var cursor = Images.find(fileObj._id); 
     var liveQuery = cursor.observe({ 
      changed: function(newImage, oldImage) { 
       if (newImage.isUploaded()) { 
        liveQuery.stop(); 
        $("#image" + postId).attr("fileId", fileObj._id); 
        var fielname = fileObj.original.name; 
        setTimeout(function() { 
         var imageUrl = '/cfs/files/images/' + fileObj._id + '/' + fielname; 
         $("#imagefile" + postId).attr("src", imageUrl); 
         $("#imagediv" + postId).show(); 
        }, 5000); 
       } 
      } 
     }); 
    } 
});}); 
Смежные вопросы