3
我想上傳一個文件,將它發送到javascript的formData對象,並通過ajax將一些php腳本放到數據庫中。當我上傳配置文件php中的文件時,它工作正常,將它發送到javascript中的formData對象並將其發送回profile.php。問題是,當我想將formData對象發送到其他一些不是profile.php的php腳本時,它不起作用。PHP文件上傳,發送formdata對象
這裏是我的代碼:
profile.php
<form role="form" id="editUserProfile" method="post" action="" enctype="multipart/form-data">
<input type="file" id="filename" name="filename" class="file-input" accept="image/*"/></a>
<button type="submit">Save</button
</form>
javascript.js
$('#editUserProfile').validate({
submitHandler: function (form) {
var aFormData = new FormData();
aFormData.append("filename", $('#filename').get(0).files[0]);
$.ajax({
type: "POST",
url: "script.php",
data: aFormData,
success: function(data){
window.location.reload(true);
}
})
}
});
而且比我想在其他一些PHP(script.php的)腳本,如果檢查文件已上傳。
if(is_uploaded_file($_FILES['filename']['tmp_name']) && getimagesize($_FILES['filename']['tmp_name']) != false){
$size = getimagesize($_FILES['filename']['tmp_name']);
$type = $size['mime'];
$imgfp = fopen($_FILES['filename']['tmp_name'], 'rb');
$size = $size[3];
$name = $_FILES['filename']['name'];
$maxsize = 99999999;
if($_FILES['userfile']['size'] < $maxsize){
$dbh = new PDO("mysql:host=localhost;dbname=test", 'root');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("INSERT INTO table (image_type ,image, image_size, image_name) VALUES (? ,?, ?, ?)");
$stmt->bindParam(1, $type);
$stmt->bindParam(2, $imgfp, PDO::PARAM_LOB);
$stmt->bindParam(3, $size);
$stmt->bindParam(4, $name);
$stmt->execute();
}else{
throw new Exception("File Size Error");
}
}
很難精確地跟隨你如何想的東西的工作。你能逐項逐項從AJAX提交開始? – charlietfl
好的。我有一個包含文件的aFormData對象,並且我希望它發送到script.php,我將檢查包含文件的對象是否成功收到。唯一的問題是進入if語句。我用腳本測試了這種情況,其中的表單和代碼運行良好,但我想在其他地方有一個函數,那就是問題所在。 – Erik
'別的地方'是非常含糊的...請更新問題,詳細說明您希望發生的事情......提及步驟中的文件。您的描述過於寬鬆無法遵循 – charlietfl