使用Angular ngf-select上传名称中包含特殊字符的文件

时间:2017-06-01 13:05:56

标签: javascript html angularjs

我正在使用后端弹簧启动的Angular2应用程序。在应用程序中,有在服务器上传文件的功能。上传文件的代码工作正常。

我正在使用ngf-select来选择文件。当文件名没有特殊字符时,它很有效。

<input type="file" name="file" ng-model="obj.fileModel" ngf-select accept="file_extension">

当我选择具有特殊字符的文件时会出现问题,例如我的名字neelam shrma @@ !! %%% ggg%。json

上传js代码为:

var formData = new FormData();
formData.append("fileObj", obj.fileModel);
UploadFile.save(formData, onUploadSuccess, onUploadError);

由于文件obj.fileModel具有带有特殊字符名称的File对象,所以它不会调用资源方法来上传文件

此外我尝试过使用编码更新文件名,但由于文件对象是只读的,因此不允许我更改名称,还创建了带编码文件名的新文件对象,但没有&# 39;工作。

资源方法:

public boolean uploadMyFile(MultipartFile mpfile) throws IOException {
...
....
 File file = new File(myFolder + File.separator + file.getOriginalFilename());               
 mpfile.transferTo(file);
......
......
}

因此具有特殊字符的文件不会调用我的资源方法:uploadMyFile(..)并抛出500服务器错误。

如何使用angularJs ngf-select?

解决上传具有特殊字符的文件的问题

1 个答案:

答案 0 :(得分:0)

添加如下过滤器

.filter('decodeURL', function () {
    return function (text) {
        if (text) {
            return window.encodeURIComponent(text);
        }
    }
});

及以下html

<img src="{{itemDetails.LargeImageName | decodeURL}}" />