[英]Upload image multipart/form-data via POST method
我正在使用 C# 编写 API 自动化测试,得到:
“状态码:BadRequest,内容类型:应用程序/json;字符集 = utf-8,内容长度:-1)”
运行我的 API 调用时。 当我在 Postman 中运行时,它工作正常,当我将请求从 Postman 复制到 C# 时出现错误。
工作 Postman 要求:
var client = new RestClient("https://example.com/api/intake/Patients/2411b32f-0ce8-46f3-90dd-79fc57447a9a/identifications/DriverLicense/image");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Bearer xxx");
request.AddHeader("Content-Type", "multipart/form-data");
request.AddHeader("Cookie", "TS017becea=xxx");
request.AddFile("File", "C://Users//GK//Desktop//NuPogodi.PNG");
IRestResponse response = client.Execute(request);
我的,不工作的要求:
IRestClient client = new RestClient("https://example.com/api/intake/Patients/2411b32f-0ce8-46f3-90dd-79fc57447a9a/identifications/DriverLicense/image");
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData = true;
request.AddHeader("authorization", "Bearer " + GetAccessTokenStr);
request.AddParameter("boundary", Guid.NewGuid().ToString(), ParameterType.GetOrPost);
request.AddHeader("Content-Type", "multipart/form-data");
request.AddFile("File", "C://Users//GK//Desktop//NuPogodi.PNG");
Response = client.Execute(request);
我错过了什么? 我需要将图像数据转换为字节数组吗?
"{"type":"InternalServerError","message":"处理此请求时出现未知错误。","errors":{},"exception":{"ClassName":"System.ComponentModel.DataAnnotations.ValidationException ","Message":"无效的图像文件类型:application/octet-stream","Data"
谢谢你,吉恩
Laravel 8 你可以轻松调用 Multipart Api 直接使用 GuzzleHttp\Client 上传图片;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Utils;
use File;
$filename = $req->file('file1')->getClientOriginalName();
$getfilePath = $req->file('file1')->getRealPath();
$client = new Client();
$response = $client->request('POST', 'http://127.0.0.1:8045/api/uploadImages', [
'multipart' => [
[
'name' => 'image',
'contents' => fopen($getfilePath, 'r')
],
// 'headers' => [
// 'Content-Type' => '<Content-type header>'
// ]
]
]);
echo $response->getStatusCode();
$bodyresponcs = $response->getBody();
$result = json_decode($bodyresponcs);
print_r($result->status);
您在视图文件中的表单
<form action="/postsubmit" method="POST" enctype="multipart/form-data" >
@csrf
<input type="file" name="file1" />
<button type="submit" class="btn long">Submit</button>
</form>
Api 代码在这里,这是在其他项目上制作的,这是 controller 代码 laravel 8
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ApiPictureUpload extends Controller
{
//
private function uploadImage11($file){
if($file == null ){
$path = "";
}else{
$path = $file->store('public/docs');
}
return str_replace("public/","", $path);
}
public function uploadImage(Request $request){
if(!$request->hasFile('image')) {
return response()->json(['status'=>'false','message'=>'Upload File Not Find',], 400);
}
$images = $request->file('image');
$extension = $images->getClientOriginalExtension();
$allowedfileExtension=['jpeg','jpg','png'];
$check = in_array($extension,$allowedfileExtension);
// if($check) {
$path= $this->uploadImage11($images);
return response()->json(['status'=>'true','message'=>'Image Uploaded','path'=>$path,'exe'=>$extension],200);
// }
// else{
// return response()->json(['status'=>'false','message'=>'Image Should be Jpg, Jpeg, Png'], 400);
// }
}
}
Api 路线代码
Route::post('/uploadImage', [ApiPictureUpload::class,'uploadImage']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.