0

file:///mnt/sdcard/APK/Video.apk ファイルをソケットに送信し、pdf とテキストファイルも送信したい。これらの種類のファイルをプログラムで送信する最良の方法は何ですか????

4

1 に答える 1

0

私は自分で質問の答えを得ました:-Dだから、ここに同じ質問をした人のための解決策があります....最初に、サーバー側のソケットでこのファイルパスuriが機能していないことを知りました「file:///mnt/」 sdcard/APK/Video.apk」などのファイル uri の種類です。ソケットで動作しているのは「/mnt/sdcard/APK/Video.apk」のみです。そのため、Content Provider から取得したファイル uri String から、Server Socket に My File を作成しました。そして、ファイルを作成した後...ファイルサイズも取得しました....

private void addSDFileEntity(final Uri uri, HttpResponse response)
            throws IOException {
        if (mTransferStartedListener != null) {
            mTransferStartedListener.started(uri);
        }

        Cursor c = mContext.getContentResolver().query(uri, null, null, null,
                null);
        c.moveToFirst();
        int nameIndex = c.getColumnIndexOrThrow(NewSDCardContentProvider.SDFiles.Columns.DISPLAY_NAME);

String name = c.getString(nameIndex);
        int dataIndex = c.getColumnIndexOrThrow(NewSDCardContentProvider.SDFiles.Columns._DATA);
        String dataname = c.getString(dataIndex);
        Uri data = Uri.parse(dataname);




        if (name.endsWith(".pdf")) {
            String contentTypepdf = "application/pdf";
            File myFile = new File(dataname);

            int reqLen = (int) myFile.length();

            Log.d("apk len===>", "" + reqLen);

            InputStream fis = new FileInputStream(myFile);

            response.addHeader("Content-Type", contentTypepdf);
            response.addHeader("Content-Length", "" + reqLen);
            response.setEntity(new InputStreamEntity(fis, reqLen));

            if (socket == null) {
                socket.close();

            }

        }
        if (name.endsWith(".apk")) {
            String contentTypeapk = "application/vnd.android.package-archive";
            File myFile = new File(dataname);

            int reqLen = (int) myFile.length();

            Log.d("apk len===>", "" + reqLen);

            InputStream fis = new FileInputStream(myFile);

            response.addHeader("Content-Type", contentTypeapk);
            response.addHeader("Content-Length", "" + reqLen);
            response.setEntity(new InputStreamEntity(fis, reqLen));

        }

今、サーバーソケットでファイルコンテンツを送信しています....

private void sendSDFileContent(
            DefaultHttpServerConnection serverConnection,
            RequestLine requestLine) throws IOException, HttpException {
        HttpResponse response = new BasicHttpResponse(new HttpVersion(1, 1),
                200, "OK");
        String SDfileId = getSDFileId(requestLine.getUri());

        Log.d("selected URI from server", SDfileId);
        addSDFileEntity(Uri.withAppendedPath(
                NewSDCardContentProvider.SDFiles.CONTENT_URI, SDfileId),
                response);
        serverConnection.sendResponseHeader(response);
        serverConnection.sendResponseEntity(response);
    }
于 2013-01-30T07:08:00.683 に答える