Javascript 从URL获取文件类型

Javascript 从URL获取文件类型,javascript,Javascript,我需要在不检查扩展名的情况下从服务器上的url图像中查找文件类型,但如果不将图像放入如下“输入”中,我不确定如何执行此操作: <input type="file" id="upload_file" accept="image/*|audio/*|video/*"/> <input type="submit" onclick="sumbit()"/> <script type="text/javascript"> function sumbit(

我需要在不检查扩展名的情况下从服务器上的url图像中查找文件类型,但如果不将图像放入如下“输入”中,我不确定如何执行此操作:

 <input type="file" id="upload_file" accept="image/*|audio/*|video/*"/>
 <input type="submit"  onclick="sumbit()"/>

<script type="text/javascript">
    function sumbit(){
        var file_Element = document.getElementById("upload_file")
        alert(file_Element.files[0].type);
        //alert: image/png
    } 
<script>

函数sumbit(){
var file\u Element=document.getElementById(“上传文件”)
警报(文件\元素。文件[0]。类型);
//警报:图像/png
} 
我知道“.type”只适用于文件对象,那么如何将url图像转换为类似以下谷歌徽标图像的对象:。
我需要使用ajax/flilereader吗?如果是,如何处理?

属性值无效。应该有逗号
而不是管道
|
字符分隔
MIME
类型

您可以使用
change
事件来检查
文件
对象
。键入


var elem=document.getElementById(“上传文件”);
elem.onchange=函数(e){
console.log(e.target.files[0].type)
}
函数提交(){
if(elem.files.length){
console.log(元素文件[0]。类型)
}否则{
警报(“未选择任何文件”)
}
}

接受属性值无效。应该有逗号
而不是管道
|
字符分隔
MIME
类型

您可以使用
change
事件来检查
文件
对象
。键入


var elem=document.getElementById(“上传文件”);
elem.onchange=函数(e){
console.log(e.target.files[0].type)
}
函数提交(){
if(elem.files.length){
console.log(元素文件[0]。类型)
}否则{
警报(“未选择任何文件”)
}
}

使用XHR下载文件,然后使用
Blob
api确定mime类型:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/image.png', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
    //Here's the type
    console.log(xhr.response.type);
};

xhr.send();

使用XHR下载文件,然后使用
Blob
api确定mime类型:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/image.png', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
    //Here's the type
    console.log(xhr.response.type);
};

xhr.send();

假设您的
内容类型
HTTP头是准确的,您可以通过创建
请求避免下载整个文件来检查类型。假设您不需要将整个文件用于其他操作,这可能是一个更快的操作,尤其是对于大型文件

工作示例:
var xhr=new-XMLHttpRequest();
xhr.open('头部','https://crossorigin.me/http://placehold.it/350x150",对),;
xhr.onload=函数(){
var contentType=xhr.getResponseHeader('Content-Type');
console.log(contentType);
};

xhr.send()
假设您的
内容类型
HTTP头是准确的,您可以通过创建
请求来避免下载整个文件只是为了检查类型。假设您不需要将整个文件用于其他操作,这可能是一个更快的操作,尤其是对于大型文件

工作示例:
var xhr=new-XMLHttpRequest();
xhr.open('头部','https://crossorigin.me/http://placehold.it/350x150",对),;
xhr.onload=函数(){
var contentType=xhr.getResponseHeader('Content-Type');
console.log(contentType);
};

xhr.send()可能重复的您是否愿意在服务器端执行文件类型检测?“我需要从位于我的服务器上的url图像中查找文件类型”图像如何上载到您的服务器?你所说的“将图像输入”是什么意思?在不知道文件名和扩展名的情况下,如何从服务器请求图像?不能保证MIME类型或扩展名能够准确识别文件的实际内容。您可以检查文件的前几个字节是否有幻数,但这并不是100%准确。您可能想更具体地说明将图像放入“输入”中意味着什么“类型”?“html输入标签”必须重新编辑该问题,但没有显示。您是否愿意在服务器端执行文件类型检测?可能重复?“我需要从我服务器上的url图像中查找文件类型”图像如何上载到您的服务器?你所说的“将图像输入”是什么意思?在不知道文件名和扩展名的情况下,如何从服务器请求图像?不能保证MIME类型或扩展名能够准确识别文件的实际内容。您可以检查文件的前几个字节是否有幻数,但这并不是100%准确。您可能想更具体地说明将图像放入“输入”中意味着什么“类型”?“html输入标签”不得不重新编辑这个问题,它没有显示出来。这就是我要找的,我要测试一下。谢谢。“使用XHR下载文件”如何从用户文件系统下载文件?注意,
文件返回的
文件
对象继承自
Blob
您不会从用户文件系统下载它。OP说“从我服务器上的一个url图像”@Danny“这就是我要找的”你是什么意思?回答时的方法不使用
?无法从用户“下载”文件filesystem@FrankerZ从
xhr.response
创建一个新的
Blob
的目的是什么<代码>var blob=新blob([xhr.response])不是必需的
xhr.response
已经是一个
Blob
这就是我要找的,我要测试一下。谢谢。“使用XHR下载文件”如何从用户文件系统下载文件?注意,
文件返回的
文件
对象继承自
Blob
您不会从用户文件系统下载它。OP说“从我服务器上的一个url图像”@Danny“这就是我要找的”你是什么意思?回答时的方法不使用
?无法从用户“下载”文件filesystem@FrankerZ创建一个新项目的目的是什么<