多圖片上傳插件
1. 圖片上傳需要flash插件怎麼解決
首先,啟動Flash安裝程式,然後點擊下一步然後,在出現的窗口中選擇接受許可協議,然後點擊下一步之後,選中安裝FlashPlayer項,然後點擊下一步繼續然後,一切資訊都搜集完畢之後,請點擊「安裝」來啟動正式的安裝進程。
目前國內的主流視頻網站 用的還是flash,所以客觀來說,是必須的,雖然html5可以用video標簽播放視頻,但是目前沒有一個視頻格式兼容所有瀏覽器的。
因此Flash成為嵌入網頁中的小游戲、動畫以及圖形用戶界面常用的格式。這個插件是目前所有的瀏覽器都是用的視頻播放的。最好是安裝上去,不要再刪除了。
首先,原版FLASH PLAYER在2016年就沒了,而2020微軟底層組件也刪除,2021年1月12號是最後微軟期限,所以到期了徹底刪除了官方FLASHPLAYER原FLASH文件會被F文件圖標加嘆號替代,當然這個也代表你沒有裝坑爹的特供版是值得高興的事。
部分站點自動跳轉判斷會跳轉到提示下載FLASH的圖片實際非FLASH彈窗,右鍵可以查看是否是圖片,這個是網站還未完全更新導致,只能等站點更新,可以聯系站長提交問題。
雖然可以用FLASH點Cn的特供版但是特供版是什麼,當你輸入FLASHPLAYER時候會自動跳轉到CN網站而不是ADOBE網站,而QQ瀏覽器360瀏覽器和一些國產瀏覽器軟體廣告聯盟會捆綁一鍵安裝,但是就算你這些瀏覽器卸載了。
那個流氓軟體也無法卸載,卸載的只是表面廣告彈窗,實際盜號程序已經侵入你所有調用FLASH的軟體及瀏覽器,而當你看他們的協議時候,你會崩潰,記錄你的輸入瀏覽記錄,你用過的軟體,發送的IP。
2. javaWEB項目中如何實現批量選擇文件並上傳呢有什麼好的插件,最好有相關代碼例子
jquery.uploadify批量上傳控制項
[html]
<linkhref="styles/uploadify.css"rel="stylesheet"type="text/css"/>
<scripttype="text/javascript"src="styles/uploadify.swf"></script>
<scripttype="text/javascript"src="javascripts/jquery.uploadify.min.js"></script>
<linkhref="styles/uploadify.css"rel="stylesheet"type="text/css"/>
<scripttype="text/javascript"src="styles/uploadify.swf"></script>
<scripttype="text/javascript"src="javascripts/jquery.uploadify.min.js"></script>還有jquery.js,你懂得!
這里注意哦,css文件會引用到這個圖片哦,所以請你指定這個圖片的位置哦,不然就沒有顯示這個叉叉哦,這個叉叉是刪除按鈕的哦,沒有就是空白哦!
[javascript]
<script>
functionsnedUpLoad(){
varpid=$("#entityId").val();//這個是我自己獲取的自定義參數
varentityName=$("#entityName").val();//同上
$("#uploadify").uploadify({//初始化uploadifyuploadify是input的id
//'debug':false,//bug模式,默認是false
'auto':false,//自動上傳,就是控制項自動上傳,默認是true
'multi':true,
//'successTimeout':99999,//超時時間
'formData':{'pid':pid,'entityName':entityName},//我的參數列表
//'fileObjName':'uploadify',//伺服器的屬性名字
'uploader':'你的後台url地址;jsessionid=${pageContext.session.id}',//提交伺服器路徑,這里
說明下;jsessionid=${pageContext.session.id},這個是用於非IE內核的瀏覽器兼容的
'swf':"styles/uploadify.swf",//flash文件,官方的文件,引用上就是了
//'uploader':'/Home/Upload',//文件保存路徑用處不大
'buttonText':'文件上傳',//按鈕
//'height':'32',//瀏覽按鈕的高度
//'width':'100',//瀏覽按鈕的寬度
'fileTypeDesc':'支持的格式:',//在瀏覽窗口底部的文件類型下拉菜單中顯示的文本
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',//允許上傳的文件後綴
'fileSizeLimit':'3MB',//上傳文件的大小限制
'queueSizeLimit':25,//上傳數量
'onSelectError':function(file,errorCode,errorMsg){//返回一個錯誤,選擇文件的時候觸發
switch(errorCode){
case-100:
alert("上傳的文件數量已經超出系統限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"個文件!");
break;
case-110:
alert("文件["+file.name+"]大小超出系統限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");
break;
case-120:
alert("文件["+file.name+"]大小異常!");
break;
case-130:
alert("文件["+file.name+"]類型不正確!");
break;
}
},
'onFallback':function(){//檢測FLASH失敗調用
alert("您未安裝FLASH控制項,無法上傳圖片!請安裝FLASH控制項後再試。");
},
'onUploadSuccess':function(file,data,response){//上傳到伺服器,伺服器返回相應信息到data里
if(data){
vardataObj=eval("("+data+")");//轉換為json對象
//$('#uploadify').uploadify('upload')
}
}
});
}
</script>
<script>
functionsnedUpLoad(){
varpid=$("#entityId").val();//這個是我自己獲取的自定義參數
varentityName=$("#entityName").val();//同上
$("#uploadify").uploadify({//初始化uploadifyuploadify是input的id
//'debug':false,//bug模式,默認是false
'auto':false,//自動上傳,就是控制項自動上傳,默認是true
'multi':true,
//'successTimeout':99999,//超時時間
'formData':{'pid':pid,'entityName':entityName},//我的參數列表
//'fileObjName':'uploadify',//伺服器的屬性名字
'uploader':'你的後台url地址;jsessionid=${pageContext.session.id}',//提交伺服器路徑,這里
說明下;jsessionid=${pageContext.session.id},這個是用於非IE內核的瀏覽器兼容的
'swf':"styles/uploadify.swf",//flash文件,官方的文件,引用上就是了
//'uploader':'/Home/Upload',//文件保存路徑用處不大
'buttonText':'文件上傳',//按鈕
//'height':'32',//瀏覽按鈕的高度
//'width':'100',//瀏覽按鈕的寬度
'fileTypeDesc':'支持的格式:',//在瀏覽窗口底部的文件類型下拉菜單中顯示的文本
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',//允許上傳的文件後綴
'fileSizeLimit':'3MB',//上傳文件的大小限制
'queueSizeLimit':25,//上傳數量
'onSelectError':function(file,errorCode,errorMsg){//返回一個錯誤,選擇文件的時候觸發
switch(errorCode){
case-100:
alert("上傳的文件數量已經超出系統限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"個文件!");
break;
case-110:
alert("文件["+file.name+"]大小超出系統限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");
break;
case-120:
alert("文件["+file.name+"]大小異常!");
break;
case-130:
alert("文件["+file.name+"]類型不正確!");
break;
}
},
'onFallback':function(){//檢測FLASH失敗調用
alert("您未安裝FLASH控制項,無法上傳圖片!請安裝FLASH控制項後再試。");
},
'onUploadSuccess':function(file,data,response){//上傳到伺服器,伺服器返回相應信息到data里
if(data){
vardataObj=eval("("+data+")");//轉換為json對象
//$('#uploadify').uploadify('upload')
}
}
});
}
</script>
[javascript]
$(function(){
snedUpLoad();//jquery容器載入完運行我們的函數
})
$(function(){
snedUpLoad();//jquery容器載入完運行我們的函數
})
[html]
<inputtype="file"name="uploadify"id="uploadify"/>//申明控制項的容器
<inputtype="file"name="uploadify"id="uploadify"/>//申明控制項的容器
前台頁面代碼基本就這樣了,很好明白,至於後台邏輯和普通上傳處理一致的,這里就不列出來的,最後上一張圖給大家鑒賞一下
(tip:其實他的批量上傳並不是一次全部提交處理的,他是一個一個依次提交,相當是一個for循環,所以後台處理的同時只是一個文件上傳,即排序的處理上傳文件,就和單個文件上傳的代碼一樣,如果你早有後台的單文件上傳代碼就不用改,直接調用就行了,可以共用)
3. vue移動端圖片上傳,可最多上傳9張,使用webuploader插件
圖片上傳WebUploader.js
4. 怎樣從我的電腦上把圖片傳到淘寶網的圖片空間里
將電腦上的圖片上傳到淘寶圖片空間具體步驟如下:
1.進入賣家中心--點擊右側導航欄的「漏則圖片空間」
5. 怎樣下載可以上傳圖片的flash控制項
電腦上下載安裝flash控制項的具體操作步驟如下:
1、首先用網路搜索引擎搜Adobe flash player軟體下載:
6. jQuery fileupload 多文件上傳
//js
$(function(){
//文件上傳地址
//varurl='http://localhost/index.php/upload/do_upload';
varurl='http://localhost/index.php/uploadwe';
//初始化,主要是設置上傳參數,以及事件處理方法(回調函數)
$('#fileupload').fileupload({
autoUpload:true,//是否自動上傳
//url:url,//上傳地址
dataType:'json',
done:function(e,data){//設置文件上傳完畢事件的回調函數
//$.each(data.result.files,function(index,file){
$("#myimg").attr({src:data.result.imgurl});
$("#myimg").css({width:"290px",height:"218px"});
//alert(data.result);
},
progressall:function(e,data){//設置上傳進度事件的回調函數
varprogress=parseInt(data.loaded/data.total*5,10);
$('#progress.bar').css(
'width',
progress+'%'
);
}
});
});
//上傳至服務後,伺服器返回json數據--上傳圖片的地址。
//html
<labelfor="text">上傳圖片</label>
<inputid="fileupload"type="file"name="files"data-url="<spanstyle="color:#ff6666;">jquery_save_img</span>"multiple>
//data-url為上傳至伺服器端的處理介面/地址,可替換js中的url
//伺服器端
functionjquery_save_img()
{
$arrType=array('image/jpg','image/gif','image/png','image/bmp','image/pjpeg','image/jpeg');
$max_size='500000000000';//最大文件限制(單位:byte)
$upfile='./uploads';//圖片目錄路徑
$file=$_FILES['files'];
/*
echo'filename:'.$file['tmp_name'].';<br/>';
echo'size:'.$file['size'].';<br/>';
echo'type:'.$file['type'].';<br/>';
echo'name:'.$file['name'].';<br/>';
*/
if($_SERVER['REQUEST_METHOD']=='POST'){//判斷提交方式是否為POST
if(!is_uploaded_file($file['tmp_name'])){//判斷上傳文件是否存在
echo"<fontcolor='#FF0000'>文件不存在!</font>";
exit;
}
if($file['size']>$max_size){//判斷文件大小是否大於500000位元組
echo"<fontcolor='#FF0000'>上傳文件太大!</font>";
exit;
}
if(!in_array($file['type'],$arrType)){//判斷圖片文件的格式
echo"<fontcolor='#FF0000'>上傳文件格式不對!</font>xxx:".$file['type'];
exit;
}
if(!file_exists($upfile)){//判斷存放文件目錄是否存在
mkdir($upfile,0777,true);
}
$imageSize=getimagesize($file['tmp_name']);
$img=$imageSize[0].'*'.$imageSize[1];
$fname=$file['name'];
$ftype=explode('.',$fname);
$picName=$upfile."/cloudy".$fname;
if(file_exists($picName)){
//echo"<fontcolor='#FF0000'>同文件名已存在!</font>";
//exit;
}
if(!move_uploaded_file($file['tmp_name'],$picName)){
echo"<fontcolor='#FF0000'>移動文件出錯!</font>";
exit;
}
else{
/*
echo"<fontcolor='#FF0000'>圖片文件上傳成功!</font><br/>";
echo"<fontcolor='#0000FF'>圖片大小:$img</font><br/>";
echo"圖片預覽:<br><divstyle='border:#F001pxsolid;width:200px;height:200px'>
<imgsrc="".$picName.""width=200pxheight=200px>".$fname."</div>";
*/
echo'{"imgurl":"http://localhost/uploads/cloudy'.$fname.'"}';
}
}
}
7. yii2高級框架怎麼使用jquery file upload上傳插件
// 視圖文件
use kartik\file\FileInput;
<?php $form = ActiveForm::begin([
'options' => ['enctype'=>'multipart/form-data'],
]); ?>
<?php
echo $form->field($model, 'banner_url[]')->label('banner圖')->widget(FileInput::classname(), [
'options' => ['multiple' => true],
'pluginOptions' => [
// 需要預覽的文件格式
'previewFileType' => 'image',
// 預覽的文件
'initialPreview' => ['圖片1', '圖片2', '圖片3'],
// 需要展示的圖片設置,比如圖片的寬度等
'initialPreviewConfig' => ['width' => '120px'],
// 是否展示預覽圖
'initialPreviewAsData' => true,
// 非同步上傳的介面地址設置
'uploadUrl' => Url::toRoute(['/goods/async-image']),
// 非同步上傳需要攜帶的其他參數,比如商品id等
'uploadExtraData' => [
'goods_id' => $id,
],
'uploadAsync' => true,
// 最少上傳的文件個數限制
'minFileCount' => 1,
// 最多上傳的文件個數限制
'maxFileCount' => 10,
// 是否顯示移除按鈕,指input上面的移除按鈕,非具體圖片上的移除按鈕
'showRemove' => true,
// 是否顯示上傳按鈕,指input上面的上傳按鈕,非具體圖片上的上傳按鈕
'showUpload' => true,
//是否顯示[選擇]按鈕,指input上面的[選擇]按鈕,非具體圖片上的上傳按鈕
'showBrowse' => true,
// 展示圖片區域是否可點擊選擇多文件
'browseOnZoneClick' => true,
// 如果要設置具體圖片上的移除、上傳和展示按鈕,需要設置該選項
'fileActionSettings' => [
// 設置具體圖片的查看屬性為false,默認為true
'showZoom' => false,
// 設置具體圖片的上傳屬性為true,默認為true
'showUpload' => true,
// 設置具體圖片的移除屬性為true,默認為true
'showRemove' => true,
],
],
// 一些事件行為
'pluginEvents' => [
// 上傳成功後的回調方法,需要的可查看data後再做具體操作,一般不需要設置
"fileuploaded" => "function (event, data, id, index) {
console.log(data);
}",
],
]);
?>
<?php ActiveForm::end(); ?>
如上所述,基本上都是組件 FileInput的基本屬性和設置,我們這里也僅僅羅列了一些常用的屬性介紹,如有所需,可查看文檔看屬性的詳細說明。
按照如上所配置,我們預覽下效果圖
感覺上效果很是可以,在開始寫php代碼實現之前,我們先在controller中實現 initialPreview和 initialPreviewConfig的配置
假設上面的視圖文件是用戶展示商品圖片的詳情頁,當前controller是指渲染視圖文件的controller,則需要在controller中獲取商品關聯的圖片,用於展示或者說用於商品圖片的刪除\新增操作。
// 假設商品的圖片是 $relationBanners,$id是商品的id
// $relationBanners的數據結構如:
/**
* Array
*(
* [0] => Array
* (
* [id] => 1484314
* [goods_id] => 1173376
* [banner_url] => ./uploads/20160617/146612713857635322241f2.png
* )
*
*)
*/
$relationBanners = Banner::find()->where(['goods_id' => $id])->asArray()->all();
// 對商品banner圖進行處理
$p1 = $p2 = [];
if ($relationBanners) {
foreach ($relationBanners as $k => $v) {
$p1[$k] = $v['banner_url'];
$p2[$k] = [
'url' => Url::toRoute('/banner/delete'),
'key' => $v['id'],
];
}
}
$model = new Banner;
return $this->render('banner', [
'model' => $model,
'p1' => $p1,
'p2' => $p2,
'id' => $id
]);
你可以看到p1是圖片地址的集合,這里用於賦值給initialPreview
p2是一組url和key的集合,這里用於賦值給initialPreviewConfig
其中url是移除圖片的請求地址
key是每個圖片對應的id
此時我們視圖文件中的pluginOptions應該是這樣的
'pluginOptions' => [
// other code
'initialPreview' => $p1,
'initialPreviewConfig' => $p2,
// other code
],
注意設置initialPreviewAsData為true哦,不然等會創建圖片後,預覽圖不會顯示。
我們在一開始配置文件中配置了uploadUrl,該參數是非同步上傳的圖片地址。
現在看上傳界面應該是光禿禿的,我們選擇一張圖片後效果如上圖2所示,
需要提醒的是,每張小圖片上的上傳是上傳對應的小圖片,input框(右下角)的上傳和移除都是針對所有的圖片的操作,一張也是上傳,十張也是上傳,我們這里只對多圖上傳的操作做一個必要的說明。
圖片上傳的地址以及上傳需要的額外參數(如商品id)我們都准備好了,額外的參數配置項是uploadExtraData,具體見上面視圖文件中的配置。
接著我們看 /goods/async-image 非同步上傳的程序實現
public function actionAsyncImage ()
{
// 商品ID
$id = Yii::$app->request->post('goods_id');
$p1 = $p2 = [];
if (empty($_FILES['Banner']['name']) || empty($_FILES['Banner']['name']['banner_url']) || !$id) {
echo '{}';
return;
}
for ($i = 0; $i < count($_FILES['Banner']['name']['banner_url']); $i++) {
$url = '/banner/delete';
$imageUrl = ''; //調用圖片介面上傳後返回圖片地址
// 圖片入庫操作,此處不可以批量直接入庫,因為後面我們還要把key返回 便於圖片的刪除
$model = new Banner;
$model->goods_id = $id;
$model->banner_url = $imageUrl;
$key = 0;
if ($model->save(false)) {
$key = $model->id;
}
// $pathinfo = pathinfo($imageUrl);
// $caption = $pathinfo['basename'];
// $size = $_FILES['Banner']['size']['banner_url'][$i];
$p1[$i] = $imageUrl;
$p2[$i] = ['url' => $url, 'key' => $key];
}
echo json_encode([
'initialPreview' => $p1,
'initialPreviewConfig' => $p2,
'append' => true,
]);
return;
}
到此,單圖和多圖上傳的工作我們也就完成了。
為了實現圖片的刪除效果,這里可以先上傳兩張圖片。你可以單張上傳也可以多張上傳。
上傳成功後你可以刷新當前頁面,因為一開始我們就在controller中實現了圖片的預覽工作,所以理應會展示我們已經上傳的兩張圖片。
按照我們的配置,現在的預覽圖應該是這樣的。
不說廢話,我們看圖片刪除的程序(/banner/delete)實現
public function actionDelete ()
{
if ($id = Yii::$app->request->post('key')) {
$model = $this->findModel($id);
$model->delete();
}
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return ['success' => true];
}