【发布时间】:2017-08-09 04:41:48
【问题描述】:
我的网络应用程序中有一个文件上传。用户可以通过 file-model 指令上传文件。我将文件数据保存在 JSON 中,并将其发送到 Wildfly 服务器上的端点。在那里,我将文件数据保存在 MySQL 数据库中。在控制台(客户端)中打印文件名时,文件名中没有变音符号错误。同样在 Eclipse 控制台中保留文件名和打印文件名之前,我没有看到任何错误。但是,在数据库中,文件名保存错误(例如 testä.jpg 变为 testa?.jpg)。此外,当打印具有该文件名的字符串时在将数据发送到服务器之前在视图中它也显示为 testa?.jpg。我已经在种子页面的头部包含了<meta charset="utf-8">。
数据库中的字段filename 编码为UTF-8,并具有排序规则utf8_general_ci。数据库/服务器设置和 JVM 选项似乎不是问题,因为如果在文本字段中输入变音符号,我可以正确保存它们。
这是检索文件数据的方式:
$scope.submit = function () {
$scope.employeePhoto = {};
var f = document.getElementById('file').files[0];
r = new FileReader();
r.onloadend = function(e){
var data = e.target.result;
$scope.employeePhoto.photoContent = uint8ArrayToArray(new Uint8Array(data));
$scope.employeePhoto.fileName = $scope.UploadFile.name;
}
// http request to the endpoint
}
问题可能是 $scope.UploadFile.name 变量中的文件名已经存储错误,但我不知道如何修复它。
【问题讨论】:
-
Java 不是 JavaScript。
标签: javascript mysql angularjs utf-8 wildfly