天天看點

【thinkphp5】thinkphp5+fileupload檔案上傳

web頁面

<form name="form" id="brand" method="post" autocomplete=off>
			<input type='file' id='logo' name='logo' class='hidden'/>
			<input type="hidden" name='file_name' value='logo'/>
			
			<div class='hidden' id='goodstype_list'>
			{notempty name='goodstype_list'}<input type='hidden' name='goods_type[]' value="{$goodstype_list[0]['goods_type_id']}" id='row0'/>
			{/notempty}</div>
			
			
            <table class="table">
                <thead>
                    <tr>
                        <th class="partition" colspan="99">{$title}</th>
                    </tr>
                </thead>
                <tbody>
                <tr>
                    <td class="w100 text-center"><i class="necessary">*</i>品牌中文名稱</td>
                    <td>
                        <input name="name_cn" id="name_cn" type="text" class="w350 fn-left" value="">
						<label id="name_cn-error" class="error" for="name_cn"></label>
                    </td>
                </tr>
				
				<tr>
                    <td class="w100 text-center">品牌英文名稱</td>
                    <td>
                        <input name="name_en" id="name_en" type="text" class="w350" value="">
                        <div id="form-error" class="form-error"></div>
                    </td>
                </tr>
				
				<tr>
                    <td class="w100 text-center"><i class="necessary">*</i>品牌首字母</td>
                    <td>
                        <input name="first_word" id="first_word" type="text" class="w350 fn-left" value="">
						<div class="form-control-box fn-left">
							<button id="auto" type='button' class="form-control-btn">自動擷取</button>
						</div>
						<label id="first_word-error" class="error" for="first_word"></label>
                    </td>
                </tr>
				
				<tr>
                    <td class="w100 text-center"><i class="necessary">*</i>logo</td>
                    <td>
                        <input name="logo_pic" id="logo_pic" type="text" class="w350 fn-left"  value="" />
						<div class="form-control-box fn-left">
							<ul>
								<li><a href="javascript:void(0)" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  class="ml5 mr5" id="upload">[上傳]</a></li>
								<li><a href="javascript:void(0)" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  id="preview">[預覽]</a></li>
							</ul>
						</div>
						
						<label id="logo_pic-error" class="error" for="logo_pic"></label>
                    </td>
                </tr>
                
				
				<tbody id="goods_type_list">
                <tr>
                    <td class="text-center"><a class="add" id="add" href="javascript:void(0)" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >[+]</a>所屬商品類型</td>
                    <td>
						<select class="w150 select" id='row0_one'>
							<option>---請選擇商品模型---</option>
							<notempty name="goodstype_list">
							{volist name="goodstype_list" id="goodstype"}
								<option value="{$goodstype['goods_type_id']}" is_final='{$goodstype.is_final}'>{$goodstype['goods_type_name']}</option>
							{/volist}
							</notempty>
						</select>
						
						<select class="w150 select hidden" id='row0_two'></select>
						
						<select class="w150 select hidden" id='row0_three'></select>
						<select class="w150 select hidden" id='row0_four'></select>
                    </td>
                </tr>
				</tbody>
                
				<tr>
                    <td class="w100 text-center"><i class="necessary"></i>排序</td>
                    <td>
                        <input name="sort_order" id="sort_order" type="text" class="w150" value="50">
                        <div id="form-error" class="form-error"></div>
                    </td>
                </tr>
				
                <tr class="text-center">
                    <td>狀态</td>
                    <td>
                    <input type="radio" name="is_show" value="1" id="tj" checked /><label for="tj">顯示</label>
                    <input type="radio" name="is_show" value="0" id="open" /><label for="open">隐藏</label>
                    </td>
                </tr>
               
                <tr>
                    <td></td>
                    <td>
                    <input class="submit" type="submit" value="送出">
                    </td>
                </tr>
                </tbody>
            </table>
        </form>           

js處理

使用fileupload插件,需要先引入以下幾個檔案:

<script type="text/javascript" src="__JS__/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="__JS__/fileupload/jquery.iframe-transport.js"></script>
<script type="text/javascript" src="__JS__/fileupload/jquery.ui.widget.js"></script>
<script type="text/javascript" src="__JS__/fileupload/jquery.fileupload.js"></script>           

【備注】注意以上幾個檔案的先後順序,jquery.fileupload.js一定要最後引入

$("#logo").fileupload({
				type:'post',
				autoUpload: true,//是否自動上傳  
				url:'{:url('Brand/uploads')}',//上傳位址
				dataType: 'json',
				add:function(e,data){
					var uploadErrors = [];
					var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
					
					if(!data.originalFiles[0]['type'].length || (data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type']))) {
						oWinArt.art.dialog({
							title:'溫馨提示',
							icon:'warning',
							lock:true,
							drag:false,
							content: '親,您上傳的為非圖檔檔案,請上傳圖檔類型哦',
							ok:true
						});
						uploadErrors.push('Tipo de Archivo no Aceptado');
					}else if (data.originalFiles[0]['size'] > 5000000) {
						oWinArt.art.dialog({
							title:'溫馨提示',
							icon:'warning',
							lock:true,
							drag:false,
							content: '親,您上傳的為檔案過大啦,請上傳小于<span class="necessary bold"> 5M </span>的圖檔哦',
							ok:true
						});
						uploadErrors.push('Tamaño de Archivo demasiado Grande');
					}
					
					if(uploadErrors.length == 0) {
						data.submit();
					}else{
						return false;
					}
				},
				done: function (e, data) {
					var data = JSON.parse(data['result']);
					if(data.src.length){
						$('#logo_pic').val(data.src);
					}else{
						console.log('no');
					}
				}
			});           

php處理

public function uploads(){
		if($this->request->isPost()){
			$path = ROOT_PATH.'public'.$this->_uploads;
			
			if(!file_exists($path)){
				mkdir($path,0777,true);
			}
			$file_name = $this->request->post('file_name');
			$file = $this->request->file($file_name);
		
			// 移動到架構應用根目錄/public/uploads/ 目錄下
			if($file){
				$info = $file->move($path);
				if($info){
					$src = $this->_uploads.$info->getSaveName();
				}else{
					// 上傳失敗擷取錯誤資訊
					$src = '';
					$msg = $file->getError();
				}
				$result = array('src'=>$src);
				return json_encode($result);
			}else{
				$this->redirect('Index/index');
			}
		}else{
			echo '11';die;
			$this->redirect('Index/index');
		}
	}           

最近對seo優化比較感興趣,做了個小程式,歡迎大家來踩 來光顧哦  www.iis7.com/b/plc/

查詢百度權重排名工具  www.iis7.com/a/lm/gjcpmcx/