簡體   English   中英

如何使用 Slim 框架上傳圖片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM