android圖片上傳
『壹』 android如何實現圖片批量上傳
首先,以下架構下的批量文件上傳可能會失敗或者不會成功:
            1.android客戶端+springMVC服務端:服務端採用org.springframework.web.multipart.MultipartHttpServletRequest作為批量上傳接收類,這種搭配下的批量文件上傳會失敗,最終服務端只會接受到一個文件,即只會接受到第一個文件。可能因為MultipartHttpServletRequest對servlet原本的HttpServletRequest類進行封裝,導致批量上傳有問題。
             2.android客戶端+strutsMVC服務端:
上傳成功的方案:
          採用android客戶端+Servlet(HttpServletRequest)進行文件上傳。
          Servlet端代碼如下:
[java] view plainprint?
DiskFileItemFactory factory = new DiskFileItemFactory();  
        ServletFileUpload upload = new ServletFileUpload(factory);  
        try  
        {  
            List items = upload.parseRequest(request);  
            Iterator itr = items.iterator();  
            while (itr.hasNext())  
            {  
                FileItem item = (FileItem) itr.next();  
                if (item.isFormField())  
                {  
                    System.out.println("表單參數名:" + item.getFieldName() + ",表單參數值:" + item.getString("UTF-8"));  
                }   
                else  
                {  
                    if (item.getName() != null && !item.getName().equals(""))  
                    {  
                        System.out.println("上傳文件的大小:" + item.getSize());  
                        System.out.println("上傳文件的類型:" + item.getContentType());  
                        // item.getName()返回上傳文件在客戶端的完整路徑名稱  
                        System.out.println("上傳文件的名稱:" + item.getName());  
  
                        File tempFile = new File(item.getName());  
                        // 上傳文件的保存路徑  
                        File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());  
                        item.write(file);  
                        request.setAttribute("upload.message", "上傳文件成功!");  
                    } else  
                    {  
                        request.setAttribute("upload.message", "沒有選擇上傳文件!");  
                    }  
                }  
            }  
        }   
        catch (FileUploadException e)  
        {  
            e.printStackTrace();  
        }   
        catch (Exception e)  
        {  
            e.printStackTrace();  
            request.setAttribute("upload.message", "上傳文件失敗!");  
        }  
        request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);  
android端代碼如下:
[java] view plainprint?
public class SocketHttpRequester {  
    /** 
     *多文件上傳 
     * 直接通過HTTP協議提交數據到伺服器,實現如下面表單提交功能: 
     *   <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data"> 
            <INPUT TYPE="text" NAME="name"> 
            <INPUT TYPE="text" NAME="id"> 
            <input type="file" name="imagefile"/> 
            <input type="file" name="zip"/> 
         </FORM> 
     * @param path 上傳路徑(註:避免使用localhost或127.0.0.1這樣的路徑測試,因為它會指向手機模擬器,你可以使用http://www.iteye.cn或http://192.168.1.101:8083這樣的路徑測試) 
     * @param params 請求參數 key為參數名,value為參數值 
     * @param file 上傳文件 
     */  
    public static boolean post(String path, Map<String, String> params, FormFile[] files) throws Exception{       
        final String BOUNDARY = "---------------------------7da2137580612"; //數據分隔線  
        final String endline = "--" + BOUNDARY + "--\r\n";//數據結束標志  
          
        int fileDataLength = 0;  
        for(FormFile uploadFile : files){//得到文件類型數據的總長度  
            StringBuilder fileExplain = new StringBuilder();  
             fileExplain.append("--");  
             fileExplain.append(BOUNDARY);  
             fileExplain.append("\r\n");  
             fileExplain.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");  
             fileExplain.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");  
             fileExplain.append("\r\n");  
             fileDataLength += fileExplain.length();  
            if(uploadFile.getInStream()!=null){  
                fileDataLength += uploadFile.getFile().length();  
             }else{  
                 fileDataLength += uploadFile.getData().length;  
             }  
        }  
        StringBuilder textEntity = new StringBuilder();  
        for (Map.Entry<String, String> entry : params.entrySet()) {//構造文本類型參數的實體數據  
            textEntity.append("--");  
            textEntity.append(BOUNDARY);  
            textEntity.append("\r\n");  
            textEntity.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");  
            textEntity.append(entry.getValue());  
            textEntity.append("\r\n");  
        }  
        //計算傳輸給伺服器的實體數據總長度  
        int dataLength = textEntity.toString().getBytes().length + fileDataLength +  endline.getBytes().length;  
          
        URL url = new URL(path);  
        int port = url.getPort()==-1 ? 80 : url.getPort();  
        Socket socket = new Socket(InetAddress.getByName(url.getHost()), port);             
        OutputStream outStream = socket.getOutputStream();  
        //下面完成HTTP請求頭的發送  
        String requestmethod = "POST "+ url.getPath()+" HTTP/1.1\r\n";  
        outStream.write(requestmethod.getBytes());  
        String accept = "Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";  
        outStream.write(accept.getBytes());  
        String language = "Accept-Language: zh-CN\r\n";  
        outStream.write(language.getBytes());  
        String contenttype = "Content-Type: multipart/form-data; boundary="+ BOUNDARY+ "\r\n";  
        outStream.write(contenttype.getBytes());  
        String contentlength = "Content-Length: "+ dataLength + "\r\n";  
        outStream.write(contentlength.getBytes());  
        String alive = "Connection: Keep-Alive\r\n";  
        outStream.write(alive.getBytes());  
        String host = "Host: "+ url.getHost() +":"+ port +"\r\n";  
        outStream.write(host.getBytes());  
        //寫完HTTP請求頭後根據HTTP協議再寫一個回車換行  
        outStream.write("\r\n".getBytes());  
        //把所有文本類型的實體數據發送出來  
        outStream.write(textEntity.toString().getBytes());             
        //把所有文件類型的實體數據發送出來  
        for(FormFile uploadFile : files){  
            StringBuilder fileEntity = new StringBuilder();  
             fileEntity.append("--");  
             fileEntity.append(BOUNDARY);  
             fileEntity.append("\r\n");  
             fileEntity.append("Content-Disposition: form-data;name=\""+ uploadFile.getParameterName()+"\";filename=\""+ uploadFile.getFilname() + "\"\r\n");  
             fileEntity.append("Content-Type: "+ uploadFile.getContentType()+"\r\n\r\n");  
             outStream.write(fileEntity.toString().getBytes());  
             if(uploadFile.getInStream()!=null){  
                 byte[] buffer = new byte[1024];  
                 int len = 0;  
                 while((len = uploadFile.getInStream().read(buffer, 0, 1024))!=-1){  
                     outStream.write(buffer, 0, len);  
                 }  
                 uploadFile.getInStream().close();  
             }else{  
                 outStream.write(uploadFile.getData(), 0, uploadFile.getData().length);  
             }  
             outStream.write("\r\n".getBytes());  
        }  
        //下面發送數據結束標志,表示數據已經結束  
        outStream.write(endline.getBytes());  
          
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
        if(reader.readLine().indexOf("200")==-1){//讀取web伺服器返回的數據,判斷請求碼是否為200,如果不是200,代表請求失敗  
            return false;  
        }  
        outStream.flush();  
        outStream.close();  
        reader.close();  
        socket.close();  
        return true;  
    }  
      
    /**  
     *單文件上傳  
     * 提交數據到伺服器  
     * @param path 上傳路徑(註:避免使用localhost或127.0.0.1這樣的路徑測試,因為它會指向手機模擬器,你可以使用http://www.itcast.cn或http://192.168.1.10:8080這樣的路徑測試)  
     * @param params 請求參數 key為參數名,value為參數值  
     * @param file 上傳文件  
     */  
    public static boolean post(String path, Map<String, String> params, FormFile file) throws Exception{  
       return post(path, params, new FormFile[]{file});  
    }  
}
『貳』 android怎麼在伺服器和客戶端之間傳輸圖片
android客戶端和java服務端之間可以用socket來傳輸圖片。
伺服器端代碼:
import java.io.DataInputStream;  
import java.io.DataOutputStream;    
import java.io.FileInputStream;    
import java.io.IOException;    
import java.net.InetSocketAddress;    
import java.net.ServerSocket;    
import java.net.Socket;    
  
public class Server02 {    
    public static void main(String[] args) {    
        try {    
            ServerSocket server = new ServerSocket(40000);    
            Socket socket = server.accept();    
            DataInputStream dos = new DataInputStream(socket.getInputStream());    
            int len = dos.available();   
            System.out.println("len = "+len);  
            byte[] data = new byte[len];    
            dos.read(data);  
              
            System.out.println("data = "+data);  
            dos.close();    
            socket.close();    
            server.close();    
        } catch (IOException e) {    
            e.printStackTrace();    
        }    
    }    
}    
客戶端代碼:
[java] view plain
imageView02 = (ImageView)findViewById(R.id.image02);  
       button02 = (Button)findViewById(R.id.Button02);  
       button02.setOnClickListener(new OnClickListener(){  
        public void onClick(View arg0) {  
            Socket socket;  
            try {  
                socket = new Socket("192.168.1.203",40000);  
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());   
                  
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qt);  
                imageView02.setImageBitmap(bitmap);  
                ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                //讀取圖片到ByteArrayOutputStream                      
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);  
                byte[] bytes = baos.toByteArray();  
                out.write(bytes);  
                  
                System.out.println("bytes--->"+bytes);  
                out.close();  
                socket.close();  
            } catch (UnknownHostException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }             
    });  
         
   }
『叄』 Android圖片批量上傳的功能。(圖片比較大)
Android中上傳圖片或者下載圖片,使用最多的是xUtils和imageloader、glide,選用這兩種的哪一種框架都行,因為是批量和圖片大容易造成界面卡以及上傳速度慢,對圖片操作不當就容易造成OOM異常,一般對於批量上傳大圖片都需要對圖片也處理,然後在上傳第一步需要對圖片進行比例壓縮之後再進行質量壓縮,處理之後的圖片比之前的圖片會小很多,再加上框架的上傳處理,會有很好的效果,希望對你有所幫助
『肆』 android中如何上傳圖片到ftp伺服器
在安卓環境下可以使用,在java環境下也可以使用,已經在Java環境下實現了功能,然後移植到了安卓手機上,其它都是一樣的。
[java] view plain 
package com.photo;  
  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
import java.io.IOException;  
import java.io.InputStream;  
  
import org.apache.commons.net.ftp.FTPClient;  
import org.apache.commons.net.ftp.FTPReply;  
  
public class FileTool {  
  
    /** 
     * Description: 向FTP伺服器上傳文件 
     *  
     * @param url 
     *            FTP伺服器hostname 
     * @param port 
     *            FTP伺服器埠 
     * @param username 
     *            FTP登錄賬號 
     * @param password 
     *            FTP登錄密碼 
     * @param path 
     *            FTP伺服器保存目錄,是linux下的目錄形式,如/photo/ 
     * @param filename 
     *            上傳到FTP伺服器上的文件名,是自己定義的名字, 
     * @param input 
     *            輸入流 
     * @return 成功返回true,否則返回false 
     */  
    public static boolean uploadFile(String url, int port, String username,  
            String password, String path, String filename, InputStream input) {  
        boolean success = false;  
        FTPClient ftp = new FTPClient();  
try {  
            int reply;  
            ftp.connect(url, port);// 連接FTP伺服器  
            // 如果採用默認埠,可以使用ftp.connect(url)的方式直接連接FTP伺服器  
            ftp.login(username, password);//登錄  
            reply = ftp.getReplyCode();  
            if (!FTPReply.isPositiveCompletion(reply)) {  
                ftp.disconnect();  
                return success;  
            }  
            ftp.changeWorkingDirectory(path);  
            ftp.storeFile(filename, input);  
  
            input.close();  
            ftp.logout();  
            success = true;  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (ftp.isConnected()) {  
                try {  
                    ftp.disconnect();  
                } catch (IOException ioe) {  
                }  
            }  
        }  
        return success;  
    }  
  
    // 測試  
    public static void main(String[] args) {  
          
        FileInputStream in = null ;  
        File dir = new File("G://pathnew");  
        File files[] = dir.listFiles();  
        if(dir.isDirectory()) {  
            for(int i=0;i<files.length;i++) {  
                try {  
                     in = new FileInputStream(files[i]);  
                    boolean flag = uploadFile("17.8.119.77", 21, "android", "android",  
                            "/photo/", "412424123412341234_20130715120334_" + i + ".jpg", in);  
                    System.out.println(flag);  
                } catch (FileNotFoundException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
          
    }  
}  
以上為java代碼,下面是android代碼。
[java] view plain 
package com.ftp;  
  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileNotFoundException;  
  
import android.os.Bundle;  
import android.app.Activity;  
import android.util.Log;  
import android.view.Menu;  
  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
          
        new uploadThread().start();  
    }  
  
    class uploadThread extends Thread {  
        @Override  
        public void run() {  
            FileInputStream in = null ;  
            File dir = new File("/mnt/sdcard/DCIM/Camera/test/");  
            File files[] = dir.listFiles();  
            if(dir.isDirectory()) {  
                for(int i=0;i<files.length;i++) {  
                    try {  
                         in = new FileInputStream(files[i]);  
                        boolean flag = FileTool.uploadFile("17.8.119.77", 21, "android", "android",  
                                "/", "412424123412341234_20130715120334_" + i + ".jpg", in);  
                        System.out.println(flag);  
                    } catch (FileNotFoundException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
    }  
}
『伍』 安卓照片怎麼導入蘋果手機
將Android手機照片導入Apple手機的方法如下:
1、在兩部手機上都安裝網路Netdisk應用程序,打開Android手機以進入網路Netdisk,然後打開開關以進行自動圖片備份。如圖所示:

『陸』 android 上傳圖片或文件都是怎麼弄的
一:可以使用httppost上傳文件
二:或者socket寫入文件
上面兩種都可以獲得二進制流,然後把文件寫入流,這一類網路操作最好使用非同步任務模型
『柒』 Android 上傳圖片到伺服器
final Map<String, String> params = new HashMap<String, String>();
            params.put("send_userId", String.valueOf(id));
            params.put("send_email", address);
            params.put("send_name", name);
            params.put("receive_email", emails);
            final Map<String, File> files = new HashMap<String, File>();
            files.put("uploadfile", file);
           final String request = UploadUtil.post(requestURL, params, files);
『捌』 怎樣將Android圖片同步進iCloud照片流
您可點擊iPhone手機的設置>iCloud,然後登錄Apple ID後,開啟照片流,「照片」應用程序中顯示「照片流」文件夾,拍攝一張照片會自動上傳照片至iCloud伺服器,「照片流」文件夾中也會顯示此照片。
溫馨提示:此功能只能用無線網路來上傳、下載照片。
『玖』 怎樣在android系統中上傳圖片,信息。以及修改信息,這些代碼
我一般都是通過遍歷集合的方式來上傳圖片。而且一般都不會去管這個上傳的順序,只需要服務端按你需要返回數據就可以了
『拾』 如何把安卓手機里的照片傳到蘋果手機上
現在隨著手機拍照技術的不斷發展,越來越多的人用手機拍照替代一部分相機功能,將拍照功能融入生活、工作、學習中,拍照越來越簡單,手機中的相片存儲也越來越多,在更換手機時還想保留此前的一些照片,需要把一些照片從舊手機導入新手機,傳輸的方式有很多,這里簡單介紹一種,只要有WiFi,可以線上直接傳輸,不需要特殊的第三方硬體,在傳輸小批量相片時還是挺方便的。這篇介紹從老的安卓手機傳輸到新的iPhone手機的過程,供參考。
開啟分步閱讀模式
工具材料:
老安卓手機,新iPhone手機
操作方法
01
首先在老的安卓手機安裝一個QQ同步助手,可以通過APP市場或者網上掃描下載,打開該APP,點擊左上角明細欄,進入界面,看到有「照片」功能,點擊該功能。
02
這個照片備份功能,利用的是雲技術,先將本機照片上傳至雲網路存儲,然後在新手機登錄該賬戶下載回來。需要獨立安裝一個相冊管家App,點擊安裝。
03
安裝好「相冊管家」後,打開該App,點擊登錄,可以通過QQ或微信賬戶登錄,上傳時最好在WiFi連接時,不然可能耗費比較多流量。
04
登錄賬戶以後,就可以選擇安卓手機上你要傳輸的圖片,可以一張一張勾選,也可以多張同時選,選擇好後點擊右上角「雲」按鍵,進入上傳界面,傳輸完成。
05
切換iPhone,進入App Store,安裝「相冊管家」,已有的就直接打開,登錄同個賬戶後,如同安卓手機那樣操作,進入「照片備份」功能。
06
進入後可以看到雲相冊里的圖片,就是剛才上傳的那些,會有詳細的大小、數量,點擊進相冊,一張張圖片都羅列在內,點擊某一相片,下方會有「下載」的選項,對應該張相片就下載到iPhone里了,完成相片搬運。
