gpt4 book ai didi

JQuery/javascript : how to get file input value?

转载 作者:行者123 更新时间:2023-12-01 04:13:26 31 4
gpt4 key购买 nike

我使用这个功能:

function resize(file, max_width, max_height, compression_ratio, imageEncoding){
var fileLoader = new FileReader(),
canvas = document.createElement('canvas'),
context = null,
imageObj = new Image(),
blob = null;

//create a hidden canvas object we can use to create the new resized image data
canvas.id = "hiddenCanvas";
canvas.width = max_width;
canvas.height = max_height;
canvas.style.visibility = "hidden";
document.body.appendChild(canvas);

//get the context to use
context = canvas.getContext('2d');

// check for an image then
//trigger the file loader to get the data from the image
if (file.type.match('image.*')) {
fileLoader.readAsDataURL(file);
} else {
alert('File is not an image' + file);
}

// setup the file loader onload function
// once the file loader has the data it passes it to the
// image object which, once the image has loaded,
// triggers the images onload function
fileLoader.onload = function() {
var data = this.result;
imageObj.src = data;
};

fileLoader.onabort = function() {
alert("The upload was aborted.");
};

fileLoader.onerror = function() {
alert("An error occured while reading the file.");
};


// set up the images onload function which clears the hidden canvas context,
// draws the new image then gets the blob data from it
imageObj.onload = function() {

// Check for empty images
if(this.width == 0 || this.height == 0){
alert('Image is empty');
} else {

context.clearRect(0,0,max_width,max_height);
context.drawImage(imageObj, 0, 0, this.width, this.height, 0, 0, max_width, max_height);


//dataURItoBlob function available here:
// http://stackoverflow.com/questions/12168909/blob-from-dataurl
blob = dataURItoBlob(canvas.toDataURL(imageEncoding));

//pass this blob to your upload function
$( "#imgcaptmobile" ).append( '<img id="imagecaptmobile" src="' + blob + '" >');
}
};

imageObj.onabort = function() {
alert("Image load was aborted.");
};

imageObj.onerror = function() {
alert("An error occured while loading image.");
};

}

使用这个 html 代码:

<input type=\"text\" name=\"form_titre_photo_capture_mobile\" placeholder=\"Titre\" class=\"texte_texte_photo_capture_mobile\" id=\"form_titre_photo_capture_mobile\">
<input type=\"file\" capture=\"camera\" accept=\"image/*\" id=\"takePictureField\" name=\"takePictureField\">
<canvas id=\"canvas_captimg\" width=\"487\" height=\"365\"></canvas>
<div id=\"imgcaptmobile\" style=\"display:hidden\"></div>

我无法获取“file”变量来执行该函数!我已经尝试过:

$('#takePictureField').change(function(e) {
var file = $(this).val();
console.log($(this).val());
resize(file, 487, 800, 70, "image/jpeg");
});

但是控制台日志上的错误是“Uncaught TypeError: Cannot call method 'match' of undefined”(当调用 if (file.type.match('image.*')) { 时)所以我想我没有正确调用文件输入值?...

最佳答案

那是因为 val 返回一个字符串对象,即所选文件的名称,而不是您的代码期望的 file 对象,您需要使用 files 属性:

$('#takePictureField').change(function(e) {
var file = this.files; // this.files[0] => the first selected file object
resize(file, 487, 800, 70, "image/jpeg");
});

关于JQuery/javascript : how to get file input value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17329825/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com