【发布时间】:2018-01-01 15:33:16
【问题描述】:
您好,我是 slim 3 框架(移动 Api)中的新成员非常感谢。
$app->post('/photo', function ($request, $response) use ($app) {
$files = $request->getUploadedFiles();
if (empty($files['newfile'])) {
throw new Exception('Expected a newfile');
}
$newfile = $files['newfile'];
if ($newfile->getError() === UPLOAD_ERR_OK) {
$uploadFileName = $newfile->getClientFilename();
$newfile->moveTo("../photos/");
}
});
它给我的错误
<h1>Slim Application Error</h1>
<p>The application could not run because of the following error:</p>
<h2>Details</h2>
<div>
<strong>Type:</strong> Error
</div>
<div>
<strong>Message:</strong> Call to a member function getError() on null
</div>
<div>
<strong>File:</strong> /home/bitstudi/public_html/api_pricegram/public/index.php
</div>
<div>
<strong>Line:</strong> 155
</div>
<h2>Trace</h2>
#0 [内部函数]: Closure->{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response), Array)
#1 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(41): call_user_func(Object(Closure), Object(Slim\Http\Request), Object(Slim\ Http\响应),数组)
#2 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/Route.php(344): Slim\Handlers\Strategies\RequestResponse->__invoke(Object(Closure), Object(Slim\Http\Request) , 对象(Slim\Http\Response), 数组)
#3 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(122): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response) )
#4 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/Route.php(316): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response) )
#5 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/App.php(476): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response) )
#6 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(122): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response) )
#7 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/App.php(370): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response) )
#8 /home/bitstudi/public_html/api_pricegram/vendor/slim/slim/Slim/App.php(295): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response) )
#9 /home/bitstudi/public_html/api_pricegram/public/index.php(161): Slim\App->run()
#10 {主要}
【问题讨论】:
-
您能否详细说明“但它不起作用” 的含义?另外,也许发布您尝试过的完整代码? (
// do something with $newfile表明您已删除您的尝试?) -
检查错误日志以获取实际的错误消息。你也可以告诉 Slim 显示实际的错误信息,设置为:
'displayErrorDetails' => true,这是你开发时的首选。 -
我不喜欢这个例子 -> akrabat.com/psr-7-file-uploads-in-slim-3
-
我们仍然需要查看实际的错误信息。请按照上面的建议打开
displayErrorDetails,然后重试。顺便说一句,您是否在$newfile->moveTo("/path/to/$uploadFileName")通话中更改了/path/to/?这需要在您的服务器上设置为绝对路径,您的 PHP 代码在其中具有写入权限。 -
好的,我更新了问题,但是有什么例子我应该休息一下吗?