2023年1月15日
(转)js 获取本地上传的文件(图片和视频)的宽高和大小
选择的文件类型 e.target.files[0].type 值
/** * e.target.files[0].type的结果 * .PSD 文件 "" * .psd 文件 "" * .pdf 文件 "application/pdf" * .PNG 文件 "image/png" * .png 文件 "image/png" * .JPEG 文件 "image/jpeg" * .jpg 文件 "image/jpeg" */
1. 不限制上传的图像或视频的格式:
/** 不限制上传的图像或视频的格式 */ <input type="file" accept="image/*" multiple /> <input type="file" accept="video/*" multiple />
2. 显示上传的文件类型在一定范围内:
/** 限制上传的文件类型在一定范围内 */ <input type="file" accept="image/png, image/jpeg" multiple /> <input type="file" accept="image/png, image/jpeg, video/mp4" multiple />
一、获取选择的本地的图片的宽高
/**
* 上传图片
* @param e 选择的文件对象
* @param progressCallback 进度回调
* @returns {Promise<any>}
*/
function uploadImageFile(e, progressCallback) {
return new Promise(function (resolve, reject) {
var fileObj = e.target.files[0];
if (fileObj.type != "image/png" && fileObj.type != "image/jpeg") {
console.log("请上传正确的文件类型");
reject("");
}
if (fileObj.size > 5*1024*1024) {
console.log("图片文件过大");
reject("");
}
// 获取上传的图片的宽高
var reader = new FileReader();
reader.readAsDataURL(fileObj);
reader.onload = function (evt) {
var replaceSrc = evt.target.result;
var imageObj = new Image();
imageObj.src = replaceSrc;
imageObj.onload = function () {
console.log(imageObj.width + imageObj.height);
// 执行上传的方法,获取外网路径,上传进度等
resolve();
};
};
});
}
二、获取上传的本地视频的宽高
/**
* 上传视频
* @param e 选择的文件对象
* @param progressCallback 进度回调
* @returns {Promise<any>}
*/
function uploadVideoFile(e, progressCallback) {
return new Promise(function (resolve, reject) {
var fileObj = e.target.files[0];
if (fileObj.type !== "video/mp4") {
console.log("请上传正确的文件类型");
reject("");
}
if (fileObj.size > 200*1024*1024) {
console.log("视频文件过大");
reject("");
}
// 获取上传的视频的宽高
var videoUrl = URL.createObjectURL(fileObj);
var videoObj = document.createElement("video");
videoObj.onloadedmetadata = function (evt) {
URL.revokeObjectURL(videoUrl);
console.log(videoObj.videoWidth + videoObj.videoHeight);
// 执行上传的方法,获取外网路径,上传进度等
resolve();
};
videoObj.src = videoUrl;
videoObj.load();
});
}
三、限制上传的PDF文件
/**
* 上传PDF
* @param e 选择的文件对象
* @param progressCallback 进度回调
* @returns {Promise<any>}
*/
function uploadPdfFile(e, progressCallback) {
return new Promise(function (resolve, reject) {
var fileObj = e.target.files[0];
if (fileObj.type !== "application/pdf") {
console.log("请上传正确的文件类型");
reject("");
}
if (fileObj.size > 60*1024*1024) {
console.log("PDF文件过大");
reject("");
}
// 执行上传的方法,获取外网路径,上传进度等
resolve();
});
}