首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flutter upload doc,docx file to api laravel

flutter upload doc,docx file to api laravel
EN

Stack Overflow用户
提问于 2020-07-05 03:12:23
回答 1查看 160关注 0票数 1

我感到厌烦的是,我使用file_picker选择select,然后返回如下代码。

问题是当我打印出的cv:是空的。或者有没有其他上传文件到api的方法?

//这里有函数抖动

代码语言:javascript
复制
    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代码

代码语言:javascript
复制
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文件中`

代码语言:javascript
复制
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
        ]); 

    }`
EN

回答 1

Stack Overflow用户

发布于 2020-07-05 05:33:42

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

代码语言:javascript
复制
File file = await FilePicker.getFile();

获得文件后,可以使用http包通过multipart request上传文件

代码语言:javascript
复制
_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中读取它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62733380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档