1
私のアプリからサーバーに画像をアップロードします。 ftp接続が不可能なので、私はPOSTで要求として画像をアップロードしたいと思います。写真をVol64でBase64文字列としてアップロードします。警告:LogSlowRequest
私はアプリにvolleyを使用しています。
D /バレーボール::[50697] BasicNetwork.logSlowRequests: リクエストに対するHTTPレスポンス= < [] http://domain.com/api.php 0x3ce314bb NORMAL 1私はBase64でStringに写真を変換し、私のサーバーに送信すると私は警告を取得します> [寿命= 5264]、[サイズ= 2]、[RC = 200]、[retryCount値= 0]これは私のアップロードのクラスである
:テスト用
public class Upload {
private Context context;
public Upload(Context _context){
context = _context;
}
public void upload(final File file){
RequestQueue queue = Volley.newRequestQueue(context);
StringRequest sr = new StringRequest(Request.Method.POST,"http://domain.com/api.php", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("DEBUG","RESPONSE: " + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<>();
params.put("a","text");
params.put("b",convertPic(file.getPath()));
params.put("c","text");
return params;
}
};
queue.add(sr);
}
private String convertPic(String path)
{
Bitmap bitmap = BitmapFactory.decodeFile(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, baos);
byte[] b = baos.toByteArray();
return Base64.encodeToString(b, Base64.DEFAULT);
}
private String convertString(String s){
return Base64.encodeToString((s).getBytes(),Base64.NO_WRAP);
}
}
、私のPHPスクリプトちょうど$ _をチェックしてくださいPOSTフィールド:
<?php
header('content-type: text/plain; charset=utf-8');
header("access-control-allow-origin: *");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
if(isset($post['a']) && $post['a'] != "" && isset($post['b']) && $post['b'] != "" && isset($post['c']) && $post['c'] != ""){
echo 'OK';
}
アップロード作品、$ _POSTフィールドのそれぞれのチェックにDefaultRetryPolicy.DEFAULT_MAX_RETRIES(PHPのコードを参照してください)。しかし、私はなぜこの警告を受けるのか分からない。 – Laire