douke3335 2010-07-08 14:13
浏览 65
已采纳

Android文件上传器与服务器端PHP

I've been looking for a solution to this for hours, but I can't find any.

Basically, I want to upload, from my android device, files to an http website. However, I have no clue whatsoever how to do this. I'm using java on the device, and I would like to use PHP on the server-side of things. I just want to upload the files, not do anything fancy with them on the server.

Can anyone provide code and/or a good link to what I need? I have little to no experience in this, and I am at a loss.

Thanks, NS

PS. I have no experience in PHP coding.

  • 写回答

3条回答 默认 最新

  • doujiao7520 2010-07-12 13:49
    关注

    Yeah, so I found the java-side of things. This works, so... yeah.

    public class Uploader extends Activity {
    
        private String Tag = "UPLOADER";
        private String urlString = "YOUR_ONLINE_PHP";
        HttpURLConnection conn;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            String exsistingFileName = "/sdcard/uploader/data/testfile";
    
            String lineEnd = "
    ";
            String twoHyphens = "--";
            String boundary = "*****";
            try {
                // ------------------ CLIENT REQUEST
    
                Log.e(Tag, "Inside second Method");
    
                FileInputStream fileInputStream = new FileInputStream(new File(
                        exsistingFileName));
    
                // open a URL connection to the Servlet
    
                URL url = new URL(urlString);
    
                // Open a HTTP connection to the URL
    
                conn = (HttpURLConnection) url.openConnection();
    
                // Allow Inputs
                conn.setDoInput(true);
    
                // Allow Outputs
                conn.setDoOutput(true);
    
                // Don't use a cached copy.
                conn.setUseCaches(false);
    
                // Use a post method.
                conn.setRequestMethod("POST");
    
                conn.setRequestProperty("Connection", "Keep-Alive");
    
                conn.setRequestProperty("Content-Type",
                        "multipart/form-data;boundary=" + boundary);
    
                DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
    
                dos.writeBytes(twoHyphens + boundary + lineEnd);
                dos
                        .writeBytes("Content-Disposition: post-data; name=uploadedfile;filename="
                                + exsistingFileName + "" + lineEnd);
                dos.writeBytes(lineEnd);
    
                Log.e(Tag, "Headers are written");
    
                // create a buffer of maximum size
    
                int bytesAvailable = fileInputStream.available();
                int maxBufferSize = 1000;
                // int bufferSize = Math.min(bytesAvailable, maxBufferSize);
                byte[] buffer = new byte[bytesAvailable];
    
                // read file and write it into form...
    
                int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
    
                while (bytesRead > 0) {
                    dos.write(buffer, 0, bytesAvailable);
                    bytesAvailable = fileInputStream.available();
                    bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
                    bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
                }
    
                // send multipart form data necesssary after file data...
    
                dos.writeBytes(lineEnd);
                dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
    
                // close streams
                Log.e(Tag, "File is written");
                fileInputStream.close();
                dos.flush();
                dos.close();
    
            } catch (MalformedURLException ex) {
                Log.e(Tag, "error: " + ex.getMessage(), ex);
            }
    
            catch (IOException ioe) {
                Log.e(Tag, "error: " + ioe.getMessage(), ioe);
            }
    
            try {
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn
                        .getInputStream()));
                String line;
                while ((line = rd.readLine()) != null) {
                    Log.e("Dialoge Box", "Message: " + line);
                }
                rd.close();
    
            } catch (IOException ioex) {
                Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊