|
|
|
สอบถาม อัพไฟล์รูปภาพ ผ่าน Jquery .post แล้วทำไมขึ้น Null ครับ |
|
|
|
|
|
|
|
สวัสดีครับ คือผมอยากสอบว่าพอมีวิธีไหนที่ใช้ $.post(url) แล้วสามารถอัพรูปภาพได้บ้างครับ
ผมอัพแล้วมันแจ้งตามนี้ครับ
Quote:Error : SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'attach' cannot be null
โค้ดที่ผมเขียนก็แบบนี้ครับ
Code
<form id="set-form" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>" method="POST">
<p id="error" class="bg-danger text-center" style="margin-bottom:11px;padding:10px"></p>
<div class="input-group">
<label class="input-group-addon btn-info" for="Username" style="color:#FFFFFF">Username</label>
<input type="text" id="Username" class="form-control" style="height:50px;font-size:16px;line-height:38px" placeholder="Username" name="Username" />
</div>
<div class="input-group" style="margin-top:11px">
<span class="input-group-btn" style="position:relative">
<span class="btn btn-warning">Upload Image</span>
<input id="inputfing" onchange="$('#text-inputimg').text($(this).val());" type="file" name="images" />
</span>
<div id="text-inputimg" class="form-control"></div>
</div>
<div class="col-sm-5 col-sm-offset-4" align="center" style="margin-top:11px">
<button type="submit" id="submit-url" class="btn btn-info btn-block">Submit</button>
</div>
</form>
ส่วน Js นะครับ
Code (JavaScript)
$("#submit-url").click(function(e) {
e.preventDefault();
$.post('shorten.php', $('#set-form').serialize(),
function(data) {
if(data.indexOf("http") == -1) {
$("#error").text(data).slideDown("slow");
}else{
$("#set-form").hide();
$("#set-tect").show();
$("#Copy-shot").val(data);
}
});
});
ส่วนโค้ด PHP ที่ใช้นะครับ
Code (PHP)
if(isset($_FILES['images']['type'])) {
$typefile = array('gif', 'jpeg', 'jpg', 'png');
$temp = explode('.', $_FILES['images']['name']);
$renamefile = date('Ymd') . end($temp);
if (($_FILES['images']['type'] == 'image/gif')
|| ($_FILES['images']['type'] == 'image/jpeg')
|| ($_FILES['images']['type'] == 'image/jpg')
|| ($_FILES['images']['type'] == 'image/png')
&& in_array($renamefile, $typefile)) {
if ($_FILES['images']['size'] < (2048000)) {
move_uploaded_file($_FILES['images']['tmp_name'], PART.'pic/'. $_FILES['images']['name']);
}else {
echo 'ขออภัย ขนาดไฟล์รูปเกิน 2mb โปรดลองใหม่อีกครั้ง';
}
}else {
echo 'ขออภัย อุนญาติให้ใช้ได้แค่นามสกุล GIF JPEG JPG หรือ PNG เท่านั้น!!';
}
}
$sql = 'INSERT INTO num_link (username, link, time, attach) VALUES (:username, :link, :time, :attach)';
$qr = $dbs->prepare($sql);
$qr->bindParam(':username', $data['strings'], PDO::PARAM_STR);
$qr->bindParam(':link', $data['addlink'], PDO::PARAM_STR);
$qr->bindParam(':time', date('Y-m-d'), PDO::PARAM_INT);
$qr->bindParam(':attach', $_FILES['images']['name'], PDO::PARAM_STR);
$qr->execute();
ช่วยทีครับ พอจะใช้อัพโหลด ผ่าน ฟั่งชั่น $.post ได้หรือเปล่าครับ แต่ถ้าใช้ PHP Submit ธรรมดา อัพขึ้นได้ปกติครับ แต่ผมอยากจะอัพผ่าน jquery น่ะครับ
แนะนำทางสว่่างให้ด้วยนะครับ ผมนั่งเขียนตั้งแต่ 16.00น. จนถึง ตี 3 แล้วครับ ยังไม่ได้เลย
Tag : PHP, jQuery
|
|
|
|
|
|
Date :
2015-08-27 03:12:38 |
By :
vilet224 |
View :
1223 |
Reply :
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type=submit
<button type="submit" id="submit-url" class="btn btn-info btn-block">Submit</button>
กับ javascript
$("#submit-url").click(function(e) {
เลือกเอาครับ ว่าจะใช้อันไหน ถ้าใช้ type=submit ก็ไม่ต้องมี $('#submit-url').click
เพราะ priority ของ funciton submit จะมาก่อน click โดย form จะถูก request ออกทันที่ ไม่ทันได้ทำงานใน function click
ถ้าอยากใช้ ฟังก์ชั่น click ต้องเปลี่ยนเป็น type=button
<form id="set-form" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>" method="POST">
คำสั่งข้างบน ไม่จำเป็นต้องใช้ PHP_SELF เพราะ action จะ default ที่ ไฟล์ปัจจุบันอยู่แล้วครับ
<form id="set-form" enctype="multipart/form-data" method="POST">
in_array($renamefile, $typefile) ใน if ข้างล่าง จะเป็น false ตลอด ไม่มีโอกาสเป็น true
Code (PHP)
if ( ($_FILES['images']['type'] == 'image/gif')
|| ($_FILES['images']['type'] == 'image/jpeg')
|| ($_FILES['images']['type'] == 'image/jpg')
|| ($_FILES['images']['type'] == 'image/png')
&& in_array($renamefile, $typefile)) {
จาก $typefile = array('gif', 'jpeg', 'jpg', 'png');
และ $renamefile = date('Ymd') . end($temp);
ส่วนคำสั่ง if check type เปลี่ยนเป็น
if( preg_match('/(gif|jpeg|jpg|png|bmp)/i', $_FILES['images']['type']) )
|
|
|
|
|
Date :
2015-08-27 06:10:17 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งไม่ไปหรือป่าว??
ลองตรวจสอบ network ดู
|
|
|
|
|
Date :
2015-08-27 09:37:34 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รูปแบบนี้ ส่งไปได้
test on jquery-2.1.4.js
Code (JavaScript)
$.ajax({
type: 'post',
url: 'data.php',
data: new FormData($('#frm_1')[0]),
cache: false,
contentType: false,
processData: false,
}).done(function(data){
console.log(data);
});
|
|
|
|
|
Date :
2015-08-27 16:55:01 |
By :
CasanovaKung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คห1 เขาอธิบายขนาดนั้น ยังทำไม่ได้ก็ไม่รู้จะบอกอะไรแล้ว
|
|
|
|
|
Date :
2015-08-27 17:14:34 |
By :
มั่วๆไป |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้า serialize ส่งไม่ได้ ลอง ajaxForm
Code (PHP)
$(function() {
$('#form').ajaxForm(function(result) {
alert('the form was successfully processed');
});
});
|
|
|
|
|
Date :
2015-08-27 18:20:13 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|