我正在尝试将信息从一个laravel应用程序中的表单发布到另一个laravel应用程序中。文本没问题,问题是重新发送照片。
目前,我只是在routes.php
文件中测试这一点,这样请求就不会发送到单独的应用程序,而是发送到自己。下面是我的代码:
Route::get('testpost', function() {
$html = '<form action="testpost" enctype="multipart/form-data" method="post"><input type="file" accept="image/*" value="Upload Photo" name="photo" id="photo"><input type="submit" value="Submit" name="submit" id="submit"></form>';
return $html;
});
Route::post('testpost', function() {
$guzzle = new \GuzzleHttp\Client();
$request = $guzzle->createRequest('POST', 'https://test1.dev/secondpost', [
'config' => [
'curl' => [
CURLOPT_SSL_VERIFYPEER => false,
]
]
]);
$postBody = $request->getBody();
$photo = Input::file('photo');
$postBody->addFile(new \GuzzleHttp\Post\PostFile('photo', $photo));
try {
$response = $guzzle->send($request);
echo $response;
} catch(Exception $e) {
echo $e->getMessage();
}
});
Route::post('secondpost', function() {
if(Input::hasFile('photo')) {
var_dump(Input::file('photo'));
} else {
echo 'No photo';
}
});
我得到的输出是:
object(Symfony\Component\HttpFoundation\File\UploadedFile)[9]
private 'test' => boolean false
private 'originalName' => string 'photo' (length=5)
private 'mimeType' => string 'text/plain' (length=10)
private 'size' => int 26
private 'error' => int 0
也就是说,图像实际上并没有被重新上传。有人知道怎么让它工作吗?
发布于 2014-06-29 20:39:50
我通过执行以下操作解决了这个问题:
$photo = Input::file('photo');
$filename = $photo->getClientOriginalName();
$photo->move(storage_path(), $filename);
然后
$request = $guzzle->createRequest();
$postBody = $request->getBody();
$postBody->addFile(new \GuzzleHttp\Post\PostFile('photo', fopen(storage_path() . '/' . $filename, 'r')));
https://stackoverflow.com/questions/24478471
复制相似问题