上载图像时出现PHP表单处理错误
我使用HTML上传图像和处理在我的表单中的PHP形式我需要以下上载图像时出现PHP表单处理错误,php,html,forms,Php,Html,Forms,我使用HTML上传图像和处理在我的表单中的PHP形式我需要以下 最多只能上载5个文件 我需要将所有图像名称存储到SQL数据库 HTML 使用上述代码,我需要将图像名称存储到SQL数据库中我建议您在此处查看: 在这里: 您可能希望用户可以多次执行这些操作: 单击浏览>选择文件>显示文件 但多文件上载的工作方式是,您在文件浏览器中选择多个文件一次(按住CTRL键)。这些是传递给$\u FILE变量的文件。我建议您多次这样做,直到最后选定的文件通过 编辑:如果您想向用户澄清这一点,您应该删除每个
- 最多只能上载5个文件
- 我需要将所有图像名称存储到SQL数据库
使用上述代码,我需要将图像名称存储到SQL数据库中我建议您在此处查看: 在这里:
您可能希望用户可以多次执行这些操作: 单击浏览>选择文件>显示文件 但多文件上载的工作方式是,您在文件浏览器中选择多个文件一次(按住CTRL键)。这些是传递给$\u FILE变量的文件。我建议您多次这样做,直到最后选定的文件通过 编辑:如果您想向用户澄清这一点,您应该删除每个文件浏览事件上的所有图像标记,以便仅显示上次选择的图像标记 测试以反映这一点:
<html>
<body>
<pre><?
foreach ($_FILES['files']['name'] as $fileName ) {
echo $fileName."\n";
}
?></pre>
<form method="post" enctype="multipart/form-data">
<input name="files[]" type="file" />
<input name="submit" type="submit" />
</form>
</body>
</html>
if (window.File && window.FileList && window.FileReader) {
$("#files").on("change", function(e) {
var files = e.target.files;
var filesLength = files.length;
var allowedCnt = 5;
if (filesLength > allowedCnt) {
$(this).replaceWith($(this).val('').clone(true));
alert('Can not add more then ' + allowedCnt + ' files');
return false;
} else {
for (var i = 0; i < filesLength; i++) {
var f = files[i]
var fileReader = new FileReader();
fileReader.onload = (function(e) {
var file = e.target;
$("<img></img>", {
class: "imageThumb",
src: e.target.result,
title: file.name
}).insertAfter("#files");
});
fileReader.readAsDataURL(f);
}
}
});
} else {
alert("Your browser doesn't support to File API")
}
再次编辑,以反映用户体验的新愿望。现在有一个带有预览或手动选择5个文件的拖放。拖放是由ajax帖子提交的,因此请查看控制台以了解结果。显示和流程需要简化,但显示了一个技术工作示例。相同的PHP代码处理这两个结果
var fd=新FormData();
$(文档).ready(函数(){
//用ajax拖拽提交
$(“#dropsubmit”)。在(“单击”上,函数(e){
$.ajax({
数据:fd,
processData:false,
contentType:false,
键入:“POST”,
成功:功能(数据){
//文件发布正常!重定向
控制台日志(数据);
}
});
})
var dropzone=$(“#dropzone”);
dropzone.on('dragenter',函数(e){
$(this.css('background','lightgreen');
});
//删除的文件,存储为formdata
dropzone.on('dragover',stopPropagate);
dropzone.on('drop',函数(e){
红玛瑙(e)
$(this.css('background','white');
var files=e.originalEvent.dataTransfer.files;
对于(var i=0;i=5)继续
}
});
玛瑙(e)的功能{
e、 停止传播();
e、 预防默认值();
}
if(window.File&&window.FileList&&window.FileReader){
$(“输入[类型=文件]”)。关于(“更改”,函数(e){
预览(e.target.files[0])
});
}否则{
警报(“您的浏览器不支持文件API”)
}
功能预览(项目){
var fileReader=newfilereader();
fileReader.onload=(函数(e){
var file=e.target;
$("
在此处拖放文件
此代码不允许您上载超过5个文件。在这里,诀窍是重置输入类型文件,即,您只需克隆并替换以前的文件。我尝试了此.reset
,但添加了多少文件的文本仍然保留
if (isset($_POST["submit"])) {
$link = mysqli_connect("myhost", "myuser", "mypassw", "mybd") or die("Error " . mysqli_error($link));
foreach (array_keys($_FILES['files']['tmp_name']) as $key) {
//Moving file where you want.
mysqli_query($link, "INSERT INTO tblName (fieldName) VALUES ('" . mysqli_real_escape_string($_FILES["files"]['name'][$key]) . "')");
}
}
您必须在PHP中使用这样的代码
$(document).ready(function() {
$('#form').on('submit', function(e) {
var $fileUpload = $("input[type='file']");
if (parseInt($fileUpload.get(0).files.length)>5){
e.preventDefault();
alert("You can only upload a maximum of 5 files");
} else if (parseInt($fileUpload.get(0).files.length) == 0) {
e.preventDefault();
alert("Choose almost one file");
}
});
});
我希望这对您有所帮助:)您是否确保您的apache配置包含
LoadModule rewrite\u module modules/mod\u rewrite。另请参见。您的问题是什么?我需要将图像名称存储到SQL,因为我在表单中只有一个输入框。如何将所有5个图像名称处理到PHP表单处理以将图像名称存储到SQL?您遇到了什么错误?在var files=e.target.files,
行之后。因此,如果文件少于5个,则只应处理整个事情在upload.how i process file name as value and store in sqli不能添加多个文件是的,但单击“浏览”不能添加多个文件多次。按设计,控制器不是这样工作的。单击“浏览”一次,然后在“文件浏览器”窗口中按住CTRL键选择多个文件。我如何使其多次运行?在这种情况下,您必须使用单独的输入元素,而不是一个带有“多个”的输入元素标签。php$FILES数组将保存文件的所有实例…如果你使用桶滚动,我会给你一个向上的投票。也许。请检查上面的问题,我用这个方法添加了表单处理方法,我能做什么当我添加图像时,我看不到图像预览,我看到了图像,但无论如何,我创建了一个JSFIDDLE,我正在尝试c为所有上传到服务器上的图片创建拇指,你能帮我吗???
<html>
<body>
<pre><?
print_r($_FILES); //SHOW THE ARRAY
foreach ($_FILES as $file) {
if (!$file['error']) {
//PROCESS THE FILE HERE
echo $file['name'];
}
}
?></pre>
<script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
var fd = new FormData();
$(document).ready(function() {
//submit dragdropped by ajax
$("#dropsubmit").on("click", function(e) {
$.ajax({
data: fd,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
//FILES POSTED OK! REDIRECT
console.log(data);
}
});
})
var dropzone = $("#dropzone");
dropzone.on('dragenter', function (e) {
$(this).css('background', 'lightgreen');
});
//dropped files, store as formdata
dropzone.on('dragover', stopPropagate);
dropzone.on('drop', function (e) {
stopPropagate(e)
$(this).css('background', 'white');
var files = e.originalEvent.dataTransfer.files;
for (var i = 0; i < files.length; i++) {
preview(files[i])
fd.append('file' + (i + 1), files[i]);
if (i >= 5) continue
}
});
function stopPropagate(e) {
e.stopPropagation();
e.preventDefault();
}
if (window.File && window.FileList && window.FileReader) {
$("input[type=file]").on("change", function(e) {
preview(e.target.files[0])
});
} else {
alert("Your browser doesn't support to File API")
}
function preview(item) {
var fileReader = new FileReader();
fileReader.onload = (function(e) {
var file = e.target;
$("<img></img>", {
class: "imageThumb",
src: file.result,
title: file.name,
}).appendTo("#images");
});
fileReader.readAsDataURL(item);
}
});
</script>
<div id="dropzone" style="width:100px;height:100px;border:2px dashed gray;padding:10px">Drag & Drop Files Here</div>
<input type="button" id="dropsubmit" value="Submit dropped files" />
<hr>
<form method="post" enctype="multipart/form-data">
<input id="file1" name="file1" type="file"/><br>
<input id="file2" name="file2" type="file"/><br>
<input id="file3" name="file3" type="file"/><br>
<input id="file4" name="file3" type="file"/><br>
<input id="file5" name="file3" type="file"/><br>
<input name="submit" type="submit" value="Upload files" />
</form><div id="images"></div>
</body>
</html>
if (window.File && window.FileList && window.FileReader) {
$("#files").on("change", function(e) {
var files = e.target.files;
var filesLength = files.length;
var allowedCnt = 5;
if (filesLength > allowedCnt) {
$(this).replaceWith($(this).val('').clone(true));
alert('Can not add more then ' + allowedCnt + ' files');
return false;
} else {
for (var i = 0; i < filesLength; i++) {
var f = files[i]
var fileReader = new FileReader();
fileReader.onload = (function(e) {
var file = e.target;
$("<img></img>", {
class: "imageThumb",
src: e.target.result,
title: file.name
}).insertAfter("#files");
});
fileReader.readAsDataURL(f);
}
}
});
} else {
alert("Your browser doesn't support to File API")
}
<form method="POST" action="" id="myform" enctype="multipart/form-data">
<input type="file" id="files" name="files[]" multiple /><br />
<input type="submit" name="submit" value="submit" />
</form>
if (isset($_POST["submit"])) {
$link = mysqli_connect("myhost", "myuser", "mypassw", "mybd") or die("Error " . mysqli_error($link));
foreach (array_keys($_FILES['files']['tmp_name']) as $key) {
//Moving file where you want.
mysqli_query($link, "INSERT INTO tblName (fieldName) VALUES ('" . mysqli_real_escape_string($_FILES["files"]['name'][$key]) . "')");
}
}
$conexion = mysqli_connect("Servername", "usernameDB", "PasswordDB", "nameDB");
if (isset($_FILES['files'])) {
if (sizeof($_FILES['files']['tmp_name']) > 5) {
exit("max 5 files allowed");
}
foreach ($_FILES['files']['error'] as $key => $value) {
switch($value) {
case (0):
if (exif_imagetype($_FILES['files']['tmp_name'][$key])) {
$dome_dir = "imaged/uploaded/";
// do something with the file, for example move it.
move_uploaded_file($_FILES['files']['tmp_name'], $some_dir . $_FILES['name']);
$message = "is a image... Uploaded";
// take care, if the name are equals that something storaged, will overwrite the old file
$filename = mysqli_real_string_escape($conexion, $_FILES['files']['name'][$key]);
$store_image = $some_dir . $filename;
$sql = "INSERT INTO tablename(ID, IMAGE_ROUTE) VALUES(NULL, '$store_image')";
if(mysqli_query($conexion, $sql)){
echo 'Image ' . $_FILES['files']['name'][$key] . ' saved successful';
} else {
echo "An error has ocurred with the database saving the image";
}
} else {
$message = "isn't a image";
}
break;
case 1:
$message = 'is too big';
break;
case 2:
$message = 'is too big';
break;
case 3:
$message = "wasn't uploaded complete";
break;
case 4:
$message = "wasn't uploaded";
break;
default:
$message = "Error: file wasn't uploaded";
break;
}
echo "The file name: " . $_FILES['files']['name'][$key] . ' ' . $message . '<br>';
}
}
<form id="form" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple>
<input type="submit" value="Submit">
</form>
$(document).ready(function() {
$('#form').on('submit', function(e) {
var $fileUpload = $("input[type='file']");
if (parseInt($fileUpload.get(0).files.length)>5){
e.preventDefault();
alert("You can only upload a maximum of 5 files");
} else if (parseInt($fileUpload.get(0).files.length) == 0) {
e.preventDefault();
alert("Choose almost one file");
}
});
});