【发布时间】:2022-06-11 00:29:29
【问题描述】:
我正在开发从相机拍摄照片并将图片上传到服务器的应用程序,所以这是我的代码:-
<form id="theform" action="upload.php" onsubmit="event.preventDefault(); return myFunction();" method="post" enctype="multipart/form-data">
<input id="file" name="uploadedFile" onchange="uptoserver();" style="display:none;"type="file" accept="image/*" capture="camera">
<div class="row justify-content-center">
<button type="submit" class="btn wbtn border rounded-pill" style="font-family:Hana; font-size:32px;">
<img src="style\image\camera.png" width="64" /> تصوير النمودج
</button>
</div>
</form>
和upload.php :-
<?php
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedFile']['name']);
if(move_uploaded_file($_FILES['uploadedFile']['tmp_name'], $target_path)) {
echo "جاري إضافة الملف ". basename( $_FILES['uploadedFile']['name']).
" إلى جدول ملف إكسل";
echo "<script>document.write(readfile(\"".$target_path."\"));</script>";
$stringPath = $target_path; //PASSING NAME PARAM
// how can i pass the Name to prepare.php
printf($stringPath);
} else{
echo "There was an error uploading the file, please try again!";
}
?>
问题是这个上传脚本正在上传图片,但它的文件损坏了,大小为 0mb,我该如何解决这个问题
【问题讨论】:
-
PHP 和 Javascript/DOM 事件在完全不同的上下文中执行。并且在两种环境之间传递信息的渠道很少且有限。在此处阅读我对另一个问题的解释以了解更多信息:stackoverflow.com/questions/72022099/…。
-
This:
echo "<script>document.write(readfile(\"".$target_path."\"));</script>";后跟printf($stringPath);创建一个字符串,如果调用得当,它会通过 HTTP 从服务器发送到浏览器。如果浏览器通过加载页面调用 upload.php,您将离开当前页面并仅在浏览器中加载该字符串。如果浏览器通过XHR 调用upload.php,页面仍然存在,但您需要使用Javascript 来捕获STRING 并对其进行处理。 -
这个
action="upload.php" onsubmit="event.preventDefault(); ...阻止表单被提交到upload.php。myFunction()和uptoserver()和readfile()的代码是什么。 -
Javascript FileReader 仅处理在客户端通过 Javascript 文件或 Blob 对象、
input type="file"元素或drag and drop 进程提供的文件。跨度> -
我建议在尝试使用
move_uploaded_file移动文件之前检查$_FILES['uploadedFile']['error']参数。也许你会在这里找到你的问题。此外,您应该在移动之前检查is_uploaded_file($_FILES['uploadedFile']['tmp_name'])。第三,也许您想定义一个小于服务器默认 PHP.INI 的最大文件大小。