【问题标题】:How to upload a image using Slim Framework如何使用 Slim 框架上传图片
【发布时间】:2020-08-04 01:52:10
【问题描述】:

我想在服务器中存储图像并将路径保存在 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 的数据库连接。试试这个Slim 4 tutorial
  • 好的,但是文件没有存储在本地服务器中。消息:

    Slim 应用程序错误

    由于以下错误,应用程序无法运行:

    详细信息

    类型: InvalidArgumentException
    消息: 上传目标路径不可写
    文件: C:\xampp\htdocs\revise\vendor \slim\slim\Slim\Http\UploadedFile.php
    行: 236

标签: php api slim


【解决方案1】:

首先,您需要一个 MySQL 数据库连接。 Read more

然后创建一个表,例如文件(id、路径、文件名)

要将记录(上传后)插入表中,可以使用如下 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-&gt;write('...') 将不起作用。必须是$response-&gt;getBody()-&gt;write('my content');

编辑:确保uploads/ 目录存在并且该目录具有写入权限。例如chmod -R 1777 uploads/

【讨论】:

  • 好的,但是文件没有存储在本地服务器中。消息显示 uo:

    Slim Application Error

    由于以下错误,应用程序无法运行:

    详细信息

    类型: InvalidArgumentException
    消息: 上传目标路径不可写
    文件: C:\xampp\htdocs\revise \vendor\slim\slim\Slim\Http\UploadedFile.php
    行: 236
  • 这是不同的。确保uploads/目录存在且该目录有写权限。
  • 我怎样才能为'uploads/'写权限?
  • 你可以用谷歌搜索它;)。例如chmod -R 1777 uploads/chmodcommand.com/chmod-1777
猜你喜欢
相关资源
最近更新 更多
热门标签