Ⅰ php後台商品添加,需要兩個表單,一個用於提交上傳圖片,一個用於提交商品數據到資料庫。
看你圖片上的表單設計,你都有「上傳」按鈕了,這就是等於已經把圖片上傳上去了(而此時表單的其他數據還沒有提交)
一般來說,PHP做商品添加,表單的其他數據和圖片的上傳都是一起來提交的,而如果你要檢查圖片是否上傳成功來決定是否提交其他表單數據的話,可以這樣設計:
一、你現在的這個表單不用改,只需要在最下面的那個「確定」按鈕上加個JS判斷,判斷一下上面的圖片是否上傳成功(如果圖片上傳這里成功上傳了圖片,你返回一個圖片的保存路徑及圖片名稱到一個隱藏的文本框裡面,然後在「確定」按鈕的JS代碼里去取這個隱藏的文本框的值,如果有值就可以判定這個圖片是上傳成功的了,否則失敗則整個表單的數據都不能提交)
二、圖片上傳框這里,確實因為表單不能嵌套,所以這個位置你就要採用一個iframe來載入另一個上傳圖片的頁面(這個上傳圖片的頁面代碼很簡單,就是那個圖片上傳框(當然你得加一些許可權判斷不然就會是一個上傳漏洞了),然後寫相應的上傳代碼把圖片上傳上去最後返回上傳後的圖片路徑及文件名等信息,使用
parent.表單名.隱藏文本框名.value='xxxx.jpg'
這個JS語句來實現把你上傳的圖片信息保存到你的隱藏文本框里。
上面這句parent...語句的詳解如下:
a.由於你的圖片上傳頁面是放在iframe里的,因此你要把iframe里的頁面的內容保存到上一層頁面(即你這個添加商品的頁面,也就是這個加了iframe代碼的頁面)
舉例個吧:
你添加商品的頁面文件名是a.php,在a.php的表單里你加了一個<iframe src="b.php"></iframe>
這裡面的b.php就是你的上傳圖片的頁面(在b.php中就是你正常的上傳圖片的表單),另外你接收上傳及處理上傳的程序都是在這個iframe裡面完成的。。
這樣應該明白了吧。既然你的上傳後的返回值是在iframe里的頁面中的,那要想把它保存到a.php這個頁面的一個隱藏文本框里,就要使用parent了。。。
所以上面那個js語句是:parent.表單名....
b.這個js語句parent.表單名.隱藏文本框名.value='xxx'中的「表單名」、「隱藏文本框名」,是指的a.php這個頁面的表單名哦。
比如你a.php的表單是<form name="addpro_form" method="post">,那麼這個JS語句中的表單名也就是addpro_form。隱藏文本框同理。
這樣,你明白了吧?
我寫個簡單的實例你看看:
a.php的代碼:
<form name="addpro_form" method="post" action="a.php?act=save">
商品名稱:<input type="text" name="pro_name" /><br />
商品價格:<input type="text" name="pro_price" /><br />
商品圖片:<input type="hidden" name="pro_img" />
<iframe width="500" height="50" src="b.php"></iframe><br />
商品說明:<textarea name="pro_intro"></textarea><br />
<input type="submit" value="確定" />
</form>
以上是a.php的代表,也就是整個表單,其中表單名是addpro_form,隱藏文本框名是pro_img。
接著寫b.php的:
<form name="upfile_form" method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="upimages"><input type="submit" value="上傳">
</form>
b.php的頁面很簡單就是一個上傳表單而已
然後upload.php是用來接收上傳的圖片並返回值的:
<?php
//以下是PHP上傳圖片的代碼(我就不寫了)
......
//假設上傳後得到圖片名稱
$imgname="111.jpg";
?>
<script type="text/javascript">
window.onload=parent.addpro_form.pro_img.value='<?php echo $imgname; ?>';
</script>
好了,upload.php的代碼也寫完了,上面一段php代碼是上傳圖片最後得到上傳後的圖片名稱,接著用一段js代碼把圖片名稱返回到上一頁去。
Ⅱ php如何將圖片傳到文本域中
文本域是指textarea嗎?直接不可以,需要做一層轉換,如將文本域的內容同步到一個iframe里。另外可以用現成的插件如:ckeditor,kindeditor,xheditor,ueditor這樣的富媒體編輯器才可以。
上傳插件可以uploadify。
Ⅲ PHP上傳圖片並把圖片地址寫入表單中!
其實要保存上傳的圖片地址並不需要專門地一個input表單項,只要在這個form提交到的後台頁面裡面做相應處理即可。
你可在後台的表單處理頁面裡面查找 move_uploaded_file() 這個函數,它的第一個參數是圖片的臨時文件名,第二個參數是即將保存的地址。只要把這第二個參數保存到資料庫即可滿足您的要求,並不需要從表單提交一個圖片過來再保存。
Ⅳ PHP 如何實現上傳圖片的值,在文本框顯示
<textarea name="ar1" id="ar1" cols="20" rows="3">這里是你文本框原有的內容</textarea>
<script language="javascript">
document.getElementById("ar1").value=document.getElementById("ar1").value+'圖片地址'
</script>
你用iframe上傳圖片,無刷新。將地址弄回來加上去,不用提交,原有文本內容存在。類似回帖時添加圖片的功效
Ⅳ 用php寫了一個簡單的發布信息頁面,上傳完圖片後頁面會自動刷新,之前填的就全沒了,求高手解決!!
樓上的辦法挺好.. 一個是ajax解決..如果不懂ajax可以網路搜索(資料很多的)
另外就是樓上的iframe嵌套來實現
你可以把上傳的代碼單獨放一個文件(也就是上傳用的form表單單獨放置,最好不要有文字,只放上傳按鈕、選擇框)
然後在原頁使用<iframe src="這里寫單獨文件地址" row="*"></iframe>來嵌套剛才的文件..
iframe還有很多屬性.. 是HTML的代碼,你可以搜索更詳細的相關內容
如果你實在弄不懂.. 就把上傳圖片的功能和本來的表單放在一起處理吧
Ⅵ php上傳圖片那個怎麼做到前台直接提示上傳成功的啊ajax 怎麼得到上傳的臨時文件名
上傳圖片這個處理有幾個思路:
1、使用form提交到當前頁面的iframe(空內容)中。
2、使用form提交數據到使用js新建的iframe里。
3、直接通過js新建form、新建iframe,提交、接收伺服器端返回的響應。(這個網上找的插件可以看到,如fileuploader)
4、使用FormData對象(有些瀏覽器不兼容)
獲取臨時文件名,只需執行提交後echo 數據出來,前台接收到即可。
Ⅶ php 非同步上傳圖片幾種方法總結
代碼如下
form action="upload.php" id="form1" name="form1" enctype="multipart/form-data" method="post" target="uploadIframe"> <!--上傳圖片頁面 --> </form> <iframe name="uploadIframe" id="uploadIframe" style="display:none"></iframe>
然後後台處理完上傳圖片邏輯後返回給前台,利用ajax修改當前頁面DOM對象實現無刷新上傳圖片的友好功能。
實例
代碼如下
a.html <form enctype="multipart/form-data" action="a.php" target="ifram_sign" method="POST"> <input name="submit" id="submit" value="" type="hidden"> <label>上傳文件: <input name="test_file" type="file" id="test_file" size="48"></label> <input type="image" value="立即上傳" id="submit_btn"> </form><iframe name="ifram_sign" src="" frameborder="0" height="0" width="0" marginheight="0" marginwidth="0"></iframe>
php代碼:
代碼如下
<?php
if ($_files["test_file"]["error"] > 0)
{
echo "Error: " . $_files["test_file"]["error"] . "<br />";
}
else
{
//這里的判斷圖片屬性的方法就不寫了。自己擴展一下。
$filetype=strrchr($_files["test_file"]["name"],".");
$filetype=substr($filetype,1,strlen($filetype));
$filename="img/".time("YmdHis").".".$filetype;
move_uploaded_file($_files["test_file"]["tmp_name"],$filename);
echo '<script >alert(1)</script>';
$return="parent.document.getElementByIdx_x('mpic".$pageset_id."').innerhtml='".$dataimgpath."'";
echo "<script >alert('上傳成功')</script>";
echo "<script>{$return}</script>";
}
?>
其實jquery ajax圖片非同步上傳
html:
<!DOCTYPE html PUBLIC "-//W3C//dtd Xhtml 1.0 transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">
<head>
<title>圖片非同步上傳</title>
</head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<link type="text/css" rel="stylesheet" href="css/index.css">
<body>
<div class="frm">
<form name="uploadFrom" id="uploadFrom" action="upload.php" method="post" target="tarframe" enctype="multipart/form-data">
<input type="file" id="upload_file" name="upfile">
</form>
<iframe src="" width="0" height="0" style="display:none;" name="tarframe"></iframe>
</div>
<div id="msg">
</div>
</body>
</html>
index.js
$(function(){
$("#upload_file").change(function(){
$("#uploadFrom").submit();
});
});
function stopSend(str){
var im="<img src='upload/images/"+str+"'>";
$("#msg").append(im);
}
upload.php
<?php
$file=$_files['upfile'];
$name=rand(0,500000).dechex(rand(0,10000)).".jpg";
move_uploaded_file($file['tmp_name'],"upload/images/".$name);
//調用iframe父窗口的js 函數
echo "<script>parent.stopSend('$name')</script>";
?>
非同步上傳圖片幾種方法
Ⅷ 新大陸picturemoreupload.iframe.php後台上傳圖片失敗
您給的錯誤提示太少,目前能知道的僅僅是哪個文件報錯了而已哦。