[英]How to upload a image using Slim Framework
我想在服務器中存儲圖像並將路徑保存在 MySQL 中,但我沒有找到一個好的代碼來做到這一點。
我找到了這個,但不起作用:
$container = $app->getContainer();
$container['upload_directory'] = __DIR__ . '../uploads';
$app->post('/photo', function (Request $request, Response $response) use ($app) {
$directory = $this->get('upload_directory');
$uploadedFiles = $request->getUploadedFiles();
$uploadedFile = $uploadedFiles['picture'];
if($uploadedFile->getError() === UPLOAD_ERR_OK) {
$filename = moveUploadedFile($directory, $uploadedFile);
$response->write('uploaded ' . $filename . '<br/>');
}
});
function moveUploadedFile($directory, UploadedFile $uploadedFile){
$extension = pathinfo($uploadedFile->getClientFilename(),
PATHINFO_EXTENSION);
$basename = bin2hex(random_bytes(8));
$filename = sprintf('%s.%0.8s', $basename, $extension);
$uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
return $filename;
}
有人知道如何上傳圖像並將路徑保存在 MySQL 中嗎?
首先,您需要 MySQL 的數據庫連接。 閱讀更多
然后創建一個表,例如 files(id, path, filename)
要將記錄(上傳后)插入表中,可以使用 SQL 語句,如下所示:
// ...
$filename = moveUploadedFile($directory, $uploadedFile);
$response->getBody()->write('File uploaded: ' . $filename);
$row = [
'path' => $directory,
'filename' => $filename
];
$sql = "INSERT INTO files SET path=:path, filename=:filename;";
$pdo->prepare($sql)->execute($row);
// ...
return $response;
請注意$response->write('...')
將不起作用。 必須是$response->getBody()->write('my content');
.
編輯:確保uploads/
目錄存在並且該目錄具有寫入權限。 例如chmod -R 1777 uploads/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.