我正在使用后端弹簧启动的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?
解决上传具有特殊字符的文件的问题答案 0 :(得分:0)
添加如下过滤器
.filter('decodeURL', function () {
return function (text) {
if (text) {
return window.encodeURIComponent(text);
}
}
});
及以下html
<img src="{{itemDetails.LargeImageName | decodeURL}}" />