颤振上传文档,docx文件到API Laravel



我厌倦的是我使用file_picker选择选择,然后返回如下代码。

问题是当我打印出 cv: 是空的。或者任何其他将文件上传到 API 的方法?

函数在这里颤动

String cvs;
Future getFile() async{
var tempFile = await FilePicker.getFile(type: FileType.custom, allowedExtensions: ['doc', 'docx']);
String fileString = jsonEncode(tempFile);
setState(() {
cvs = fileString;
print(cvs);
});
}

这是我的数据 JSON 代码

var data = {
'firstName': firstNameController.text,
'lastName': lastNameController.text,
'gender': genderController.text,
'experience': experienceController.text,
'field_id': _mySelection,
'description_filed': descriptionFiledController.text,
'cv_type': cvTypeController.text,
'cv': cvs
};

后端 Laravel 代码将信息存储在数据库和 Google 云端硬盘 if 文件中 `

public function storeApi(Request $req){

$post = new Post;
//To associate a user with a post,
$field = Field::all();
$cvs = new Cv;

$validator = Validator::make($req->all(), [
'firstName' => 'required|max:255',
'lastName' => 'required|max:255',
'gender' => 'required|max:255',
'experience' => 'required|max:255',
'cv' => 'required|max:100000|mimes:doc,docx',
]);
if($validator->fails()){

return redirect('/user/create_cv')
->withErrors($validator)
->withInput();
}
else{
$post->user()->associate(Auth::user());
$post->firstName=$req->firstName;
$post->lastName=$req->lastName;
$post->gender=$req->gender;
$post->field_id=$req->field_id;

$post->experience=$req->experience;

$post->description_filed=$req->description_filed;
$post->cv_type=$req->cv_type;
if($req->hasFile('cv')){

$cvs->user()->associate(Auth::user());

$cvs->cv = $req->file('cv')->store('google_folder_link', 'google');

$cvs->url =  Storage::disk('google')->url($cvs->cv);
$cvs->save();

}

$post->save();
}
return response()->json([
'success' => "true",
'message' => 'Post successfully',
'post'    => $post,
'cv'    => $cvs
]); 
}`

您可以按如下方式获取选取的文件

File file = await FilePicker.getFile();

获得文件后http您可以使用包通过分段请求上传它

_asyncFileUpload(File file) async {
//create multipart request for POST or PATCH method
var request = http.MultipartRequest("POST", Uri.parse("<request_url>"));
// add additional fields
// request.fields["field1"] = value1;

// create multipart using filepath, string or bytes
var fileToUpload = await http.MultipartFile.fromPath("file_field", file.path);
//add multipart to request
request.files.add(fileToUpload);
var response = await request.send();
//Get the response from the server
var responseData = await response.stream.toBytes();
var responseString = String.fromCharCodes(responseData);
print(responseString);
}

一旦你得到一个多部分文件,你就可以很容易地阅读PHP中的多部分文件。

最新更新