使用javascript检查服务器上是否存在具有韩语字符的文件?

时间:2018-05-08 20:19:35

标签: javascript jquery

所以我试图检查我的服务器上是否存在pdf文件。

PDF文件以韩国语命名,如abc.com/토보토보.pdf

我试过了:

function UrlExists(url)
{
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    console.log(http.status);
}

但问题是它始终编码为 example.com/%C3%AD%C2%86%C2%A0%C3%AB%C2%B3%C2%B4%C3%AD%C2%86 %C2%A0%C3%AB%C2%B3%C2%B4.pdf

UrlExists("example.com/토보토보.pdf")
01:51:29.144 VM428:14 
HEAD
http://example.com/%ED%86%A0%EB%B3%B4%ED%86%A0%EB%B3%B4.pdf     
404     (Not Found)

如何解决我的问题?

2 个答案:

答案 0 :(得分:1)

我想也许您希望在发送http请求之前通过encodeURIComponent运行网址的基本文件名部分。

这应该将您的韩文文本转换为转义文本(带有百分号),然后就可以找到它。

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

答案 1 :(得分:0)

尝试window.encodeURIwindow.encodeURIComponent

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

// encodes characters such as ?,=,/,&,:
console.log(encodeURIComponent('?x=шеллы'));
// expected output: "%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"

console.log(encodeURIComponent('?x=test'));
// expected output: "%3Fx%3Dtest"

或试试这个:

const pdf = {name:"토보토보"};

fetch(url, {
  method: 'POST', 
  body: JSON.stringify(pdf),
  headers: new Headers({
    'Content-Type': 'application/json'
  })
})
.then(function(res){
  return res.json()
})
.then(function(v){
  // read the result
})

或者您可以通过将JSON作为查询参数来执行GET请求:

const pdf = {name:"토보토보"};
const url = "example.com?pdf=${JSON.stringify(pdf)}"
fetch(url).then(...);