簡體   English   中英

使用Retroft Android將文件上傳到php服務器時出錯

[英]error while uploading file to php server using retroft android

我試圖使用Retroft Android將文件上傳到服務器。

我的問題是當我上傳文件時不起作用,但是當我上傳圖像時它就起作用了嗎? 我怎么解決這個問題 ?

上傳功能

private void uploadImage() {

            progressDialog = new ProgressDialog(context);
            progressDialog.setMessage(getString(R.string.wait_plz));
            progressDialog.setCancelable(false);
            progressDialog.show();
            API_POST service = RetroClient.getApiService();
            File file = new File(selectedFilePath);
            RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
            MultipartBody.Part body = MultipartBody.Part.createFormData("uploaded_file", file.getName(),
    requestFile);
            Call<Result> resultCall = service.uploadImageSTudyPlain(body);
            resultCall.enqueue(new Callback<Result>() {
                @Override
                public void onResponse(Call<Result> call, Response<Result> response) {
                    if(response.isSuccessful())
                    {
                        Log.d("Status",response.body().getStatus()+"");
                        Log.d("msg",response.body().getMsg()+"");


                        if (progressDialog.isShowing()) {
                            progressDialog.dismiss();
                        }

                    }else
                    {
                        Toast.makeText(context, "false", Toast.LENGTH_SHORT).show();

                    }
                }

                @Override
                public void onFailure(Call<Result> call, Throwable t) {
                    if (progressDialog.isShowing()) {
                        progressDialog.dismiss();
                    }
                }

        });

從設備中選擇文件

public void showImagePopup() {
    Intent intent = new Intent();
    intent.setType("*/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"Choose File to Upload.."),1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == Activity.RESULT_OK){
        if(requestCode == 1){
            if(data == null){
                //no data present
                return;
            }


            Uri selectedFileUri = data.getData();
            selectedFilePath = FilePath.getPath(this,selectedFileUri);

            if(selectedFilePath != null && !selectedFilePath.equals("")){
                tvFileName.setText(selectedFilePath);
            }else{
                Toast.makeText(this,"Cannot upload file to server",Toast.LENGTH_SHORT).show();
            }
        }
    }
}

您應該設置正確的文件類型:

RequestBody requestFile = RequestBody.create(
    MediaType.parse(getContentResolver().getType(file.toURI())), 
    file);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM