js動態建立上傳表單通過iframe類比Ajax實現無重新整理_javascript技巧

來源:互聯網
上載者:User
複製代碼 代碼如下:

<script>
window.onload=function(){
upfile('file.php');
}


/*
** url 路徑
**/
function upfile(url){
//建立iframe
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.id = 'iframeName';
iframe.name = 'iframeName';
iframe.style.display = 'none';
//建立form
var turnForm = document.createElement("form");
document.body.appendChild(turnForm);
turnForm.method = 'post';
turnForm.action = url;
turnForm.encoding = "multipart/form-data";
turnForm.name = 'formNamer';
turnForm.target = 'iframeName';
//建立隱藏表單
var newElement = document.createElement("input");
newElement.setAttribute("name","inputname");
newElement.setAttribute("type","file");
newElement.setAttribute("value",'');
turnForm.appendChild(newElement);
}

//form提交
function formSubmit() {
//var res = document.formNamer.inputname.value;
document.formNamer.submit();
}

//傳回值
function callback(result){
//window.parent.document.getElementById('iframeName').style.display = 'block'; 通過iframe 查看後台資料
if(result['error'] == 0){
document.getElementById('test').src= result['img'][1]+'/'+result['img'][2];
}else if(result['error'] == 1){
alert(result['meg']);
}else if(result['error'] == 2){
alert(result['meg']);
}else if(result['error'] == 3){
alert(result['meg']);
}else if(result['error'] == 4){
alert(result['meg']);
}else{
alert(result['meg']);
}

}

</script>

<a href="javascript:formSubmit()">上傳</a>
<img src="http://blog.163.com/zhwxl_zyx/blog/img/pasic.jpg" id="test" width="200" height="200">

file.php
複製代碼 代碼如下:

<?php
header("content-Type: text/html; charset=Utf-8");

if(@is_uploaded_file($_FILES['inputname']['tmp_name'])){

$f = $_FILES['inputname'];
$name = $f["name"];
$size = $f["size"];
$type = $f["type"];
$fileName = $f["tmp_name"];

switch ($type) {
case 'image/jpg':$okType = true;
break;

case 'image/jpeg':$okType = true;
break;

case 'image/png':$okType = true;
break;

case 'image/gif':$okType = true;
break;
}

if($okType){
$error = $f["error"];
echo '檔案名稱:'.$name.'<br>';
echo '檔案類型:'.$type.'<br>';
echo '檔案大小:'.round($size/1024).'K<br>';
echo '檔案臨時存放路徑:'.$fileName.'<br>';

$fileDir = dirname(__FILE__).'/img/upfile'.time().$name;
$img = explode('/',$fileDir);

move_uploaded_file($fileName, $fileDir);

$data = array();
$data['img'] = $img;
$data['name'] = $name;
$data['type'] = $type;
$data['size'] = $size;
$data['filename'] = $fileName;
$data['fileDir'] = $fileDir;

if($error==0){
/*echo '上傳成功!';
echo '預覽:';
echo "<img src="http://blog.163.com/zhwxl_zyx/blog/.$img[1].'/'.$img[2]." width='200' height='200'><br>";
echo '檔案名稱'.$img[2];*/
$data['error'] = 0;
exit("<script>parent.callback(".json_encode($data).");</script>");

}elseif($error==1){
$data['error'] = 1;
$data['meg'] = '超過了檔案大小,在php.ini檔案中設定';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==2){
$data['error'] = 2;
$data['meg'] = '超過了檔案的大小MAX_FILE_SIZE選項指定的值';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==3){
$data['error'] = 3;
$data['meg'] = '檔案只有部分被上傳';
exit("<script>parent.callback(".json_encode($data).");</script>");
}elseif ($error==4){
$data['error'] = 4;
$data['meg'] = '沒有檔案被上傳';
exit("<script>parent.callback(".json_encode($data).");</script>");
}else{
$data['meg'] = '上傳檔案大小為0';
exit("<script>parent.callback(".json_encode($data).");</script>");
}

}
}else{
$data['error'] = 4;
$data['meg'] = '沒有檔案被上傳';
exit("<script>parent.callback(".json_encode($data).");</script>");
}
?>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.