我感到厌烦的是,我使用file_picker选择select,然后返回如下代码。
问题是当我打印出的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
]);
}`发布于 2020-07-05 05:33:42
您可以按如下方式获取所选的文件
File file = await FilePicker.getFile();获得文件后,可以使用http包通过multipart request上传文件
_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中读取它。
https://stackoverflow.com/questions/62733380
复制相似问题