你好,我是网络开发的新手,并试着不问简单的问题。 我正在尝试使用php将带有ajax的上传文件保存到我的wamp中,但我的代码只允许保存.jpg和.doc文件。 这是带上传按钮的代码:
<!DOCTYPE html>
<body>
<input name="file" id="file" type="file" />
<br /><br />
<progress id="progress"></progress>
<script>
var fileInput = document.querySelector('#file'),
progress = document.querySelector('#progress');
fileInput.onchange = function() {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'community.php');
xhr.upload.onprogress = function(e) {
progress.value = e.loaded;
progress.max = e.total;
};
xhr.onload = function() {
var uploadStatus = document.getElementById("finish");
document.getElementById('finish').innerHTML = 'Upload done !';
};
var form = new FormData();
form.append('file', fileInput.files[0]);
xhr.send(form);
};
</script>
<p id="finish">
</p>
以下是POST请求的处理代码:
$error = NULL;
$filename = NULL;
if (isset($_FILES['file']) && $_FILES['file']['error'] === 0) {
$filename = $_FILES['file']['name'];
$targetpath = getcwd() . '/' . $filename; // On stocke le chemin où enregistrer le fichier
// On déplace le fichier depuis le répertoire temporaire vers $targetpath
if (@move_uploaded_file($_FILES['file']['tmp_name'], $targetpath)) { // Si ça fonctionne
$error = 'OK';
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
echo "it worked" ;
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$result= $_FILES['file']['name'];
$bdd->exec("INSERT INTO videos(Name) VALUES('$result')");
echo $result;
}
else
{ // Si ça ne fonctionne pas
$error = "Failure of uploading";
}
} else
{
$error = 'No videos uploaded!';
}
if(isset($_POST["community.php"]))
{
$Location = $_POST["community.php"];
FileFunc($Location);
}
function FileFunc($Location){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Location);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$myFile = curl_exec($ch);
curl_close($ch);
$file = 'myFile.pdf';
file_put_contents($file, $myFile);
}
最后一行javascript:
window.top.window.uploadEnd("<?php echo $error; ?>", "<?php echo $filename; ?>");
奇怪的是$ file ='myFile.pdf';它不能与.pdf文件一起使用,只保存.doc文件。当我放入'myFile.jpg'时,图片会保存在wamp中,但是当我尝试任何视频扩展时,它都无效...
我尝试使用之前上传和保存文件,它从不保存超过10mb的文件,任何人都可以确认我是否正常?
感谢您的时间。
15.00 gmt时更新: 在我最近对此问题的评论之后,这与Iframe的问题相同:
带按钮的代码:
<form id="uploadForm" enctype="multipart/form-data" action="upload.php" target="uploadFrame" method="post">
<label for="uploadFile">Image :</label>
<input id="uploadFile" name="uploadFile" type="file" />
<br /><br />
<input id="uploadSubmit" type="submit" value="Upload !" />
</form>
服务器答案(上一个upload.php的较轻版本):