我有一个用PHP上传给客户的文件,但是由于他们的网络很慢,所以从他们的网络上传时,它的工作不好(如果从他们的计算机桌面上传,效果很好)。
我可以阻止用户从他们的网络中选择文件,而只能从他们自己的计算机中允许吗?
我想到了在功能\\
中仅允许以网络路径//
或fileSelected()
开头的文件路径。但是由于新浏览器的安全性,无法使用JavaScript / jQuery读取用户的上传路径,因为它已被“ fakepath”替换。
我的脚本是用PHP上传的标准文件。
<div class="custom-file">
<input type="file" class="custom-file-input" id="fileToUpload" onchange="fileSelected();" name="fileToUpload" accept=".zip" required>
<span id="selected-file" class="custom-file-label" for="fileToUpload">Choose file</span>
<div class="invalid-feedback">
Please select a file.
</div>
</div>
function fileSelected() {
//Calculate size
}
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);
xhr.open("POST", "src/fileUpload.php");
xhr.send(fd);
}
fileUpload.php
<?php
//$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")
?>