yii curl 文件上传
求大牛解决,系统用的是yii框架搭建的。找了好久都没找到原因,新增可以,编辑的时候添加新的图片就是不成功我想说明的是 在后台新加一条记录,图片上传功能是完全可用的,就是在编辑相关信息的时候想上传新的图片就上传不成功。
程序执行轨迹代码片段:
if ($waitSave) { $files = array(); foreach ($waitSave as $r) $files[] = $r['url']; // 将文件移动到正式目录下... $rs = Attachment::connect(Yii::app()->params['key'], Yii::app()->params['secret'])->move($files); //$files 参数是一个图片绝对临时路径 的数组
static public function move($files = '') { if (!$files && !self::$files) return ; if (self::$files) $files = self::$files; $filesData['files'] = serialize($files); $post = self::getPostData($filesData); $rs = self::$curlInstance->send_post_data( self::ATTACHMENT_URL . self::API_FILENAME . 'move', $post ); return self::resultToObject($rs); }
function send_post_data($url, $postdata, $ip=null, $timeout=10) { curl_setopt($this->ch, CURLOPT_URL, $url); curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true); if ($ip) { if ($this->debug) { echo "Binding to ip $ip\n"; } curl_setopt($this->ch, CURLOPT_INTERFACE, $ip); } curl_setopt($this->ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($this->ch, CURLOPT_POST, true); $post_array = array(); if (is_array($postdata)) { foreach ($postdata as $key => $value) { $post_array[] = urlencode($key) . "=" . urlencode($value); } $post_string = implode("&", $post_array); if ($this->debug) { echo "Url: $url\nPost String: $post_string\n"; } } else { $post_string = $postdata; } curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post_string); $result = curl_exec($this->ch); if (curl_errno($this->ch)) { if ($this->debug) { echo "Error Occured in Curl\n"; echo "Error number: " . curl_errno($this->ch) . "\n"; echo "Error message: " . curl_error($this->ch) . "\n"; } return false; } else { return $result; } }
下面是远程服务器上的代码
api.php
elseif ($action == 'move') { // 请求移动文件 $files = (isset($_POST['files'])) ? unserialize(str_stripslashes($_POST['files'])) : ''; if (is_array($files)) { foreach ($files as $k => $v) $files[$k] = str_ireplace(AM_URL, '', $v); } else { $files = str_ireplace(AM_URL, '', $files); } $rs = $s->move($files, BASE_UPLOAD_DIR . date('Ym/d') . '/');
static public function move($file, $newfile) { return File::move($file, $newfile); }
File类里面的move方法
static public function move($file = '', $filePath = '') { if (!$file or !$filePath) throw new ParametersException('未获取到请求移动的文件或者文件目标位置'); // 判断路径是否"/"结尾 $filePath = self::path($filePath); // 判断文件是否存在 if (is_array($file)) { foreach ($file as $f) { if (!file_exists($f)) throw new FileNotFoundException('源文件数组中包含不存在的文件'); } // 构造目标位置的绝对路径 foreach ($file as $key => $f) { $fileBaseName = basename($f); $newfiles[$key] = $filePath . $fileBaseName; } }
if (!file_exists($f)) 这里就找不到临时文件了,但是实际上临时文件夹是有对应图片文件存在的。
回复讨论(解决方案)
把一个及其简单的事情,弄得那么复杂?
把一个及其简单的事情,弄得那么复杂?
我以为这样能让人更明白

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)