0

STACkers...共有フォルダのあるWebサーバーがあります...アドレスは次のとおりです。

    "http://192.168.1.1:9999/folder/0" 

ファイルのダウンロードに関する多くの情報をグーグルで検索しましたが、助けが必要です...

  1. ダウンロードは成功です...ファイルをドロイドにアップロードするにはどうすればよいですか?(サーバー上の権限が有効になっています)...

    case R.id.download:
        try {
             java.net.URL u = new java.net.URL("http://192.168.1.1:9999/file/2/01.mp3");
                HttpURLConnection c = (HttpURLConnection) u.openConnection();
    
                c.setRequestMethod("GET");
                c.setDoOutput(true);
                c.connect();
                FileOutputStream f = new FileOutputStream(new File("/sdcard/in", "01.mp3"));
    
    
                InputStream in = c.getInputStream();
    
                byte[] buffer = new byte[1024];
                int len1 = 0;
                while ( (len1 = in.read(buffer)) > 0 ) 
                {
                     f.write(buffer,0, len1);
                }
                f.close();
        }
        catch (Exception e) {
            System.out.println("Nay, did not work");
            textView.setText(e.getMessage());
        }
        break;  
    
  2. 特にモバイルクライアントの場合、ネットワーク接続は頻繁に失敗します。たとえば、Wifiから3Gに切り替えると、既存のネットワーク接続が切断され、リクエストを再試行する必要があります。Apache HttpClientには、デフォルトのDefaultHttpRequestRetryHandlerオブジェクトが登録されており、デフォルトで3回失敗した接続を再試行します。問題は、あるネットワークから別のネットワークへの切り替えに少し時間がかかり、DefaultHttpRequestRetryHandlerがすぐに再試行することです。MYのダウン/アップロードにどのように実装しますか?
4

2 に答える 2

2

ファイルをアップロードするには、マルチパート リクエストを使用できます: http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html

        client = new DefaultHttpClient(...);
        HttpPost post = new HttpPost("some url");
        MultipartEntity multipart = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
        multipart.addPart("Description", new StringBody("Description"));
        multipart.addPart("File", new FileBody(fileObject));
        post.setEntity(multipart);

        client.execute(post, new ResponseHandler() {

         @Override
         public Object handleResponse(HttpResponse response)
            throws ClientProtocolException, IOException {
             //handle response
          }
        });
于 2012-02-07T07:21:21.493 に答える
1
Please make sure you have the required Web Services for Posting.
Just pass the file and url of server and the following should run. 

   try{
                    int maxBufferSize=1024*1024;
                    File file = new File(YourPathToFile); 
                    String fileName = file.getName();

                        URL url = new URL(YourUrlServer);
                       connection = (HttpURLConnection) url.openConnection();
                   // Allow Inputs & Outputs
                    connection.setDoInput(true);
                    connection.setDoOutput(true);
                    connection.setUseCaches(false);
                    // Enable POST method
                    connection.setRequestMethod("GET");
                    connection.setRequestProperty("Connection", "Keep-Alive");
                    connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
                    connection.setChunkedStreamingMode(maxBufferSize);
                    outputStream = new DataOutputStream( connection.getOutputStream() );

                    fileInputStream = new FileInputStream(file);


                    outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                    outputStream.writeBytes("Content-Disposition: form-data; name=\"strAuthKey\"" + lineEnd);
                    outputStream.writeBytes(lineEnd);
                    outputStream.writeBytes(SoapRequestProcessor.authKey());//authentication key
                    outputStream.writeBytes(lineEnd);

                    outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                    outputStream.writeBytes("Content-Disposition: form-data; name=\"mediaName\"" + lineEnd);
                    outputStream.writeBytes(lineEnd);
                    outputStream.writeBytes(fileName); //file.lastModified()+"_"+
                    outputStream.writeBytes(lineEnd);


                    outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                    outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"IMAGEFILE\"" + lineEnd);
                    outputStream.writeBytes(lineEnd);
                    bytesAvailable = fileInputStream.available();
                    bufferSize = Math.min(bytesAvailable, maxBufferSize);
                    buffer = new byte[bufferSize];
                    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
                    while (bytesRead > 0)
                    {
                    outputStream.write(buffer, 0, bufferSize);
                    bytesAvailable = fileInputStream.available();
                    bufferSize = Math.min(bytesAvailable, maxBufferSize);
                    buffer = new byte[bufferSize];
                    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
                    }

                   outputStream.writeBytes(lineEnd);



                    outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
                    fileInputStream.close();
                        outputStream.close();
                    Log.d("RESPONSE","--"+connection.getResponseMessage());
    }
                   catch (Exception e) {
                    Log.i("Exception: ",e.toString());

                    // TODO: handle exception
                }
于 2012-02-07T07:12:56.097 に答える