如何解决为什么我的上传临时文件夹中有两个文件?
我以某种形式使用PHP上传文件。但是我在Windows temp中得到了两个文件(我使用IIS)。但是当我移动文件时,我得到一个文件。
html
var myDataMob = "";
if (data.data == "mob_num_header") myDataMob = data.data;
<form id="order-form" class="needs-validation" method="post" enctype="multipart/form-data" novalidate>
<!-- about 20 input fields -->
<div class="modal-footer">
<button id="send-button" class="btn btn-primary btn-lg btn-block" type="submit">Send order</button>
<div id="send-information">
<small><span id="procent">0%</span> complete or <span id="loaded">0</span> of <span id="file-size">0</span></small>
<div class="progress">
<div id="progressNumber" class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div>
</div>
</div>
</div>
../ uploads有一个文件,但Windows temp的上传文件有两个temp文件。
发送订单。 sendOrder.PHP会提取所有期望文件上载的字段,并通过电子邮件发送。
function fileSelected() {
var file = document.getElementById('filetoUpload').files[0];
if (file) {
var fileSize = 0;
if (file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('file-size').innerHTML = fileSize;
}
}
function uploadFile(fd) {
fd.append("filetoUpload",document.getElementById('filetoUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress",uploadProgress,false);
xhr.addEventListener("load",uploadComplete,false);
xhr.addEventListener("error",uploadFailed,false);
xhr.addEventListener("abort",uploadCanceled,false);
// stop the non-ajax form post
fd.preventDefault();
xhr.open("POST","src/fileUpload.PHP");
xhr.send(fd);
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
//var loaded = 0;
if (evt.loaded > 1024 * 1024)
loaded = (Math.round(evt.loaded * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
loaded = (Math.round(evt.loaded * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('procent').innerHTML = percentComplete.toString() + '%';
document.getElementById('progressNumber').style.width = percentComplete.toString() + '%';
document.getElementById('loaded').innerHTML = loaded.toString();
}
else {
document.getElementById('progressNumber').innerHTML = 'unable to compute';
}
}
function uploadComplete(evt) {
/* This event is raised when the server send back a response */
window.location.replace("src/successpage.html");
}
function uploadFailed(evt) {
alert("There was an error attempting to upload the file.");
}
function uploadCanceled(evt) {
alert("The upload has been canceled by the user or the browser dropped the connection.");
}
and my PHP file upload in fileUpload.PHP
<?PHP session_start(); /* Starts the session */
//$fileName = $_FILES["filetoUpload"]["name"]; // The file name
$fileName = $_SESSION['fileName'];
$fileTmpLoc = $_FILES["filetoUpload"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["filetoUpload"]["type"]; // The type of file it is
$fileSize = $_FILES["filetoUpload"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["filetoUpload"]["error"]; // 0 for false... and 1 for true
move_uploaded_file($fileTmpLoc,"../uploads/$fileName")
?>
解决方法
您得到两个文件,因为您两次请求src/sendOrder.php
。第一次是在ajax请求中执行此操作(帖子中的最后一个代码块),第二次是在ajax请求后调用函数uploadFiles(formData)
。
您应该尝试从最后一个代码块中排除$ .ajax(...)。或排除uploadFiles(formData)
,但进度条将不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。