我正在使用CGI.pm版本3.10來使用Perl進行文件上傳。我有一個上傳文件的Perl腳本,我的一個應用程序通過簽入簽出設備跟蹤上傳文件的不同修訂版本。爲什麼CGI.pm上傳成功的新文件上傳文件的舊版本?
重新造物步驟:
- 我已經用我的應用程序(這是基於網絡的使用Apache)做了結賬(下載文件)。
- 從當前用戶會話中註銷。
- 用相同的憑證重新登錄,然後簽入(上傳)一個新文件。
輸出:
- 上傳成功
- 的Perl上傳腳本顯示了正確的上傳數據
- 文件的新修訂創建
輸出是正確的和預期之外的一個案件是問題
期:
- 新上傳的文件的內容與上次上載的數據庫中的內容相同。
我正在使用臨時文件夾來複制新內容,如果我在上傳腳本中打印新內容,那麼它就是正確的。我對CGI上傳大小沒有限制。它似乎在CGI環境中失敗了,可能是我正在使用的版本。我不使用污點模式。
任何人都可以幫助我理解可能的原因嗎?
您應該嘗試跟蹤某些日誌中文件的內容。你會看到在哪一步它改變了它不應該的方式。使用您提供的信息很難理解發生的情況。這是太高的水平。請嘗試*本地化*錯誤並附上導致它的代碼。 – 2010-09-23 13:45:14
你必須顯示一些代碼。構建一個展示問題的最小測試用例,以便其他人可以自行復制它。 – daxim 2010-09-23 13:47:15
很難理解你的問題。您從數據庫中獲取文件的最新版本,下載它,在本地修改並重新上傳。它可以很好地上傳到臨時文件夾。當您嘗試加載(或比較?)它與數據庫時,您意識到臨時文件現在具有文件在數據庫中的內容。這是正確的嗎 ?如果是這樣,我的猜測是你的代碼來檢查數據庫採取該數據庫中的文件,並用它替換臨時的。但是隨着你的高級描述,很難說明原因。正如Ivan所建議的那樣,您應該在流程的各個步驟檢查文件以進行調試。 – 2010-09-23 16:26:05