0
有這麼多類似的問題,但沒有一個看起來完全一樣。Laravel/php上傳不起作用
下面是一些代碼,我使用的內外牆
public function create($input, $index = false, $params = false)
{
$file = Input::file($input);
if ($file === null)
{
return false;
}
if ($index !== false)
{
$file = $file[$index];
}
else
{
$file = reset($file);
}
if ($file === null)
{
return false;
}
$image = new ImageModel;
$image->mime = $file->getClientMimeType();
$image->extension = $file->guessClientExtension();
$image->filename = $file->getClientOriginalName();
if ($params !== false)
{
//there are parameters to add
}
$image->save();
$image->hash = md5($image->id);
$path = str_split($image->hash);
$path = array_slice($path, 0, 5);
$system_path = implode(DIRECTORY_SEPARATOR, $path);
$fileName = substr($image->hash, 5);
$path[] = $fileName;
$image->path = implode('/', $path);
$destination_path = implode(DIRECTORY_SEPARATOR, [public_path(), 'images', $system_path, null]);
if (self::_makePath($destination_path))
{
$file_path = implode('.', [$destination_path.$fileName, $image->extension]);
$image->save();
dd([
$file->getRealPath(),
file_exists($file->getRealPath()),
file_exists($destination_path),
$file_path,
is_writable($destination_path),
move_uploaded_file($file->getRealPath(), $file_path)
]);
move_uploaded_file($file->getRealPath(), $file_path);
//$file->move($destination_path, $fileName);
$this->image = $image;
return $this->image;
}
return false;
}
該功能的目的是創建圖片ID的散列,然後用它來創建到圖像的目錄路徑,確保上傳將始終是唯一的。
這個功能在$file->move
最近在一個家園應用程序(laravel 4.2,而不是最新版本的homestead,也在一定程度上進行了調整,但沒有任何php/nginx值被改變),但是沒有任何調整一段時間後,它停止工作。我試圖改變功能,以交替方式做上傳,但沒有。它說的是該文件無法上傳,原因不明。
使用上面的代碼我有一些測試,如果文件可以上傳/移動並且全部檢出,即使move_uploaded_file
返回true,但是沒有文件被移動。
如果不仔細觀察代碼,您是否檢查過目標目錄的權限? – lukasgeiter
是的,我正在使用'is_writable'來檢查使用轉儲。 –