我有一个允许用户上传文件的应用。用户被发送到预览页面,在那里他们可以下载他们刚刚上传的文件以进行排序以验证事情是否正确。但由于某种原因,文件名到达servlet时不正确,可能导致这种情况?
$('a[id^=dl_link_]').click(function(e) {
e.preventDefault();
$('#dl_form input[name=file_name]').val($(this).text());
$('#dl_form input[name=uid]').val(upload.tempId);
$('#dl_form').submit();
});
当我添加日志时,我看到文件名是正确的;即“这是一个测试文件.docx”。 但是当这些数据到达后端时,我得到以下结果:
java.io.FileNotFoundException: /Users/yao/__TEMP__/upload_temp/1111/0gGNMY8PcAWEs3M/this�is�a�test�file.docx (No such file or directory)
通过将各部分组合在一起构建文件路径。 servlet接收uid和文件名,其他一切都来自其他一些后端方法。
这可能是什么原因?
答案 0 :(得分:1)
也许你需要打电话
encodeURIComponent()
在文件名上。它会将空间字符转换为%20,然后在后端正确转换。
答案 1 :(得分:1)
我看到问题与空间角色有关。这个问题可能会对您有所帮助:accessing files with spaces in filename from java