Php 如何在用户选择图片后立即提交表单?
我有一个表单,我正试图弄清楚,在用户上传图片并验证它是图片后,如何提交表单。我正在尝试使用javascript验证正在上载的图像。尝试以下操作:Php 如何在用户选择图片后立即提交表单?,php,jquery,forms,cgi,Php,Jquery,Forms,Cgi,我有一个表单,我正试图弄清楚,在用户上传图片并验证它是图片后,如何提交表单。我正在尝试使用javascript验证正在上载的图像。尝试以下操作: <script> function submitFormAfterImageCheck() { if(/(\.jpeg|\.jpg|\.gif|\.png|\.tiff)$/.test(document.getElementById("myFile").value)) {
<script>
function submitFormAfterImageCheck()
{
if(/(\.jpeg|\.jpg|\.gif|\.png|\.tiff)$/.test(document.getElementById("myFile").value))
{
document.getElementById("myForm").submit();
}
else
{
alert("you can only upload an image");
}
}
</script>
函数submitFormAfterImageCheck()
{
if(/(\.jpeg\.jpg\.gif\.png\.tiff)$/.test(document.getElementById(“myFile”).value))
{
document.getElementById(“myForm”).submit();
}
其他的
{
警报(“您只能上载图像”);
}
}
以及HTML:
<input id="myFile" type="file" onchange="submitFormAfterImageCheck();" />
您可以使用Iframe来处理上载
<iframe src="upload.php" id="uploadHandler"></iframe>
在php文件upload.php
:检查$\u FILES数组中上传的文件是否正常,并响应如下响应:
$allowed_extensions = array("jpg", "png", "gif");
if (in_array(end(explode(".", $_FILES['file_browser']['filename'])), $allowed_extensions)) {
echo "upload OK";
}
else {
echo "invalid file";
}
未经测试。。。但是:)您可以在客户端检查文件扩展名,然后决定是否触发表单的提交,例如(jQuery样式):
$(函数(){
$('#fileDivId')。更改(函数(){
$this=$(this);
if($.inArray($this.val().split('.').pop().toLowerCase(),['jpg','jpeg','png','gif'])!=-1){
$this.parent().trigger('submit');
}
});
});
但这里有一些弱点:
1) 您仍然必须在服务器端清理图像
2) 不太清楚当输入类型为“file”时,$('inputId').val()如何工作。例如,Firefox4返回文件名,但如果我没记错的话,IE将返回文件的完整路径(C:\Docs\Img\etc),而且由于安全原因,它可能在某些浏览器中被禁用
3) 在我的代码中获取扩展部分并不完美-更简洁的情况:用户选择文件C:\Doc.img\file\u no\u ext,它返回“img\file\u no\u ext”用户如何上传图片?通常情况下,他们必须先提交表格才能上传图片…请你再详细一点。您将使用JavaScript验证图片还是PHP?通过使用PHP的
,在上传文件之前,您无法检查文件。您可以在
中异步上传它,然后发回javascript,以执行您希望执行的任何操作我如何“发回javascript”?(代码方面)我已将javascript代码添加到文档的头部,并添加了以下代码:
但它不会提交URL是什么?我可以完全按照你的需要来写:)哎呀!我错过了一个)
,在if()
的结尾,这真是太棒了,除了现在,无论我上传什么,我都会收到警告“你只能上传图像”。我尝试了.png、.tif等。您可以测试此函数是否有效函数submitFormAfterImageCheck(){alert(this.value=''?“not working”:“working”);}
$allowed_extensions = array("jpg", "png", "gif");
if (in_array(end(explode(".", $_FILES['file_browser']['filename'])), $allowed_extensions)) {
echo "upload OK";
}
else {
echo "invalid file";
}
<script>
$(function(){
$('#fileDivId').change(function(){
$this = $(this);
if ($.inArray($this.val().split('.').pop().toLowerCase(), ['jpg', 'jpeg', 'png', 'gif']) != -1) {
$this.parent().trigger('submit');
}
});
});
</script>
<form action="post.php" method="POST">
<input type="file" id="fileDivId">
</form>