использование ng-file-upload для загрузки файла на жесткий диск

Я хочу использовать ng-file-upload для загрузки файлов на жесткий диск сервера.

  this.uploadFiles = function(files, errFiles) {
                                  this.files = files;
                                  this.errFiles = errFiles;
                                    angular.forEach(files, function(file) {
                                        file.upload = Upload.upload({
                                            url: 'C:\Java\logs',
                                            data: {file: file}
                                        });

                                        file.upload.then(function (response) {
                                            $timeout(function () {
                                                file.result = response.data;
                                            });
                                        }, function (response) {
                                            if (response.status > 0)
                                                this.errorMsg = response.status + ': ' + response.data;
                                        }, function (evt) {
                                            file.progress = Math.min(100, parseInt(100.0 * 
                                                                     evt.loaded / evt.total));
                                        });
                                    });
                                }

когда я использую этот код, я получаю эту ошибку

angular.js:10765 XMLHttpRequest не может загрузить файл:///C:/Javalogs. Запросы между источниками поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https, chrome-extension-resource.

это то, что я сделал, но это не сработало

this.uploadFiles = function(file, errFiles) {
                                Upload.dataUrl(file[0], true).then(function (base64Url) {
                                    var filename = 'test.jpg';
                                     var a = document.createElement("a");
                                    var myDocument = getFileContainer(base64Url);
                                    var blob = new Blob([myDocument.data], {type: 'image/jpg'});
                                    var file = new File([blob], 'imageFileName.jpg');
                                    if(window.navigator.msSaveOrOpenBlob) {
                                        window.navigator.msSaveBlob(blob, filename);
                                    }
                                    else{
                                        var elem = window.document.createElement('a');
                                        elem.href = window.URL.createObjectURL(file);
                                        elem.download = filename;        
                                        document.body.appendChild(elem);
                                        elem.click();        
                                        document.body.removeChild(elem);
                                    }
                                }) 

картинка создается, но я не могу ее просмотреть


person Belal Othman    schedule 25.08.2016    source источник
comment
Я хочу загружать изображения и PDF-файлы, я не против использовать для этого любую вещь.   -  person Belal Othman    schedule 25.08.2016


Ответы (1)


Я отправляю их через URL-адрес base64 на серверную часть. Это зависит от того, какие данные вам нужны, но примерно это должно выглядеть как следующий код.

 function getMimeTypeFromUrl(imageUrl) {
  return imageUrl.substring(imageUrl.indexOf(':') + 1, imageUrl.indexOf(';'));
}

function getDataFromUrl(imageUrl){
  return imageUrl.substring(imageUrl.indexOf(',') + 1);
}

function getFileContainer(imageUrl, file){
  return {
    data:getDataFromUrl(imageUrl),
    mimeType: getMimeTypeFromUrl(imageUrl),
    filename: file.name,
  }
}
this.uploadFiles = function(files, errFiles) {
Upload.dataUrl(file, true).then(function (base64Url) {
  myDocument = getFileContainer(base64Url, file);
   //here you have to post myDocument 
  }
}

Upload — это служба загрузки ng-file-upload, которая загружает файл в браузер как URL-адрес base64. Я надеюсь, что смог помочь вам.

person Thomas Zoé    schedule 25.08.2016
comment
спасибо за вашу помощь, теперь я получаю данные, имя файла и тип. как я могу сохранить его на жесткий диск - person Belal Othman; 25.08.2016
comment
Приятно это слышать, ist зависит от языка программирования. Java будет выглядеть примерно так = Base64.decodeBase64(crntImage); try (OutputStream stream = new FileOutputStream(c:/decode/abc.bmp)) { stream.write(data); } - person Thomas Zoé; 25.08.2016
comment
но я не мог создать файл из этих данных :(, я не мог просмотреть сгенерированное изображение - person Belal Othman; 25.08.2016
comment
Я пытаюсь сделать это с помощью java-скрипта, а не с помощью java - person Belal Othman; 25.08.2016
comment
Возможно, это поможет вам stackoverflow.com/questions/6926016/ - person Thomas Zoé; 25.08.2016
comment
Если мой ответ помог вам, было бы неплохо, если бы вы приняли его и проголосовали за него. - person Thomas Zoé; 25.08.2016
comment
спасибо за вашу помощь, но я реализую это по-другому - person Belal Othman; 26.08.2016