gpt4 book ai didi

php - 使用 javascript 和 php 上传 HTML5 图像

转载 作者:行者123 更新时间:2023-11-28 02:36:27 25 4
gpt4 key购买 nike

我想使用 javascriptphp (html5) 将图像多次上传到数据库,但我遇到了问题,我的代码只是上传一张图像,这是所选的最新照片,而不是全部。如何解决这个问题以及我必须做什么?

我使用开发者mozilla html5: Here

您可以通过选择多个图像并单击按钮上传图像来测试我的代码以查看结果。

<强> DEMO FROM MY FULL CODDE

我的js代码:

function doClick() {
var el = document.getElementById("fileElem");
if (el) {
el.click();
}
}

function handleFiles(files) {
var d = document.getElementById("fileList");
if (!files.length) {
d.innerHTML = "<p>No files selected!</p>";
} else {
var list = document.createElement("ul");
d.appendChild(list);
for (var i = 0; i < files.length; i++) {
var li = document.createElement("li");
list.appendChild(li);

var img = document.createElement("img");
img.src = window.URL.createObjectURL(files[i]);;
img.height = 60;
img.onload = function () {
window.URL.revokeObjectURL(this.src);
}
li.appendChild(img);

var info = document.createElement("span");
info.innerHTML = files[i].name + ": " + files[i].size + " bytes";
li.appendChild(info);
}
}
}

我的PHP代码:

<?php 
foreach ($_FILES[ 'userfile'] as $key=>$value{
echo '<pre>';
print_r($value);
}
?>

我的html代码:

<html>

<head>
<title>file input click() demo</title>
<script type="text/javascript" src="html5java.js"></script>
</head>

<body>
<a href="javascript:doClick()">Select some files</a>

<div id="fileList"></div>
<form action="up.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile[]" id="fileElem" multiple accept="image/*"
style="display:none" onchange="handleFiles(this.files)">
<input type="submit" value="Upload Images">
</form>
</body>

</html>

最佳答案

问题是 php 多个文件没有存储为 $_FILES['userfile'][x]['name'] 等,它们存储为 $_FILES['userfile']['name'][ 'x']。

因此,最好的方法通常是循环遍历文件数组并将数组重新排序为更符合逻辑的模式。像下面这样的函数可以很好地将其转换为您期望的工作方式(取自第二条评论: http://php.net/manual/en/features.file-upload.multiple.php )

<?php
public static function fixGlobalFilesArray($files) {
$ret = array();

if(isset($files['tmp_name']))
{
if (is_array($files['tmp_name']))
{
foreach($files['name'] as $idx => $name)
{
$ret[$idx] = array(
'name' => $name,
'tmp_name' => $files['tmp_name'][$idx],
'size' => $files['size'][$idx],
'type' => $files['type'][$idx],
'error' => $files['error'][$idx]
);
}
}
else
{
$ret = $files;
}
}
else
{
foreach ($files as $key => $value)
{
$ret[$key] = self::fixGlobalFilesArray($value);
}
}

return $ret;
}
?>

关于php - 使用 javascript 和 php 上传 HTML5 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422692/

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