Форум программистов, компьютерный форум CyberForum.ru

Передача файлов на сервер - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
derec
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 74
14.07.2014, 11:38     Передача файлов на сервер #1
Здравствуйте, такой вопрос возник.
Нужно из приложение закачивать файлы на сервер.
сколько я не бился но всетаки нашел примерный скрипт как отправлять файлы.
проблемы в том что там нужно составлять POST запрос.
если закачивать просто файлы то все получается.
но мне нужно еще и передавать параметры на сервер а вот тут уже возникают проблемы.
я не могу нормально сформировать запрос.
просто не понимаю как работает эта система.
Существуют ли какие нибудь другие способы передачи файлов на сервер???


вот сейчас пользуюсь этим:
JAVA
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package com.khv.togu;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
 
import android.os.AsyncTask;
import android.util.Log;
 
public class upload_files {
    String pathToOurFile;
    String gruppa;
upload_files(String path, String grup){
    pathToOurFile=path;
    gruppa=grup;
    
}
    Thread myThread = new Thread(new Runnable() {
          public void run() {
        HttpURLConnection connection = null;
        DataOutputStream outputStream = null;
        DataInputStream inputStream = null;
        
        String urlServer = "http://www.***.ru/upload.php";
        //String urlServer = "";
        String lineEnd = "\r\n";
        Log.d("testo",pathToOurFile);
        String twoHyphens = "--";
        String boundary =  "*****";
         
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1*1024*1024;
         
        try
        {
            FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
         
            URL url = new URL(urlServer);
            connection = (HttpURLConnection) url.openConnection();
         
            // Allow Inputs & Outputs.
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setUseCaches(false);
         
            // Set HTTP method to POST.
            connection.setRequestMethod("POST");
         
            connection.setRequestProperty("Connection", "Keep-Alive");
            connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
         
            outputStream = new DataOutputStream( connection.getOutputStream() );
            outputStream.writeBytes(twoHyphens + boundary + lineEnd); //                                     |
            outputStream.writeBytes("Content-Disposition: form-data; name=\"gruppa\"" + lineEnd); / / | 
            outputStream.writeBytes(lineEnd); //                                                                         |
            outputStream.writeBytes(gruppa);//          это параметры которые мне нужно передать, из-за этого скрипт не работает                                                                                                                    |
            
            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\";gruppa=\""+gruppa+"\";" + lineEnd);
            outputStream.writeBytes(lineEnd);  эта часть работает
            
         Log.d("piz", pathToOurFile+" "+gruppa);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];
         
            // Read file
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
         
          
            while (bytesRead > 0)
            {
                outputStream.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }
         
            outputStream.writeBytes(lineEnd);
            outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
         
            // Responses from the server (code and message)
            int serverResponseCode = connection.getResponseCode();
            String serverResponseMessage = connection.getResponseMessage();
         
            Log.d(""+serverResponseCode,serverResponseMessage);
            
            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
            Log.d("d", "ok");
        }
        catch (Exception ex)
        {
            //Exception handling
            ex.printStackTrace();
        }
 
          }
          });
    }

upload.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
 
$gruppa =$_POST['gruppa'];
$anabolik = basename( $_FILES['uploadedfile']['name']);
$target_path  ="grupp/".$gruppa."/";
 
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
{
    echo "The file ".  basename( $_FILES['uploadedfile']['name']).
 " has been uploaded";
}
else
{
    echo "There was an error uploading the file, please try again!";
}
?>
нужно получить параметр gruppa чтоб отправить файл опред место.

как можно еще передавать файлы если не так??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2014, 11:38     Передача файлов на сервер
Посмотрите здесь:

Android Передача файлов через BlueTooth OPP / ContentResolver
Android Сервер
Android Передача файлов через NFC
Android Передача звука
Передача id в TimePickerDialog Android
Передача данных Android
Android Передача фото по сети на сервер
Android Как загрузить на Ftp сервер список файлов?
Передача по TCP Android
Передача значения переменой на сервер Android
Цвет файлов в VCS - поменять синий цвет имен файлов Android
Android Передача HTML как строки из Андроида на сервер

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru