Android客戶端上傳文件,C#服務端接收文件

Android客戶端代碼

    public static String uploadImage(File file, String RequestURL) {
        String result = "error";
        String BOUNDARY = UUID.randomUUID().toString();//邊界標識 隨機生成
        String PREFIX = "--", LINE_END = "\r\n";
        String CONTENT_TYPE = "multipart/form-data";//內容類型
        try {
            URL url = new URL(RequestURL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(50000);
            conn.setConnectTimeout(50000);
            conn.setDoInput(true);//允許輸入流
            conn.setDoOutput(true);//允許輸出流
            conn.setUseCaches(false);//不允許使用緩存
            conn.setRequestMethod("POST");//請求方式
            conn.setRequestProperty("Charset", "UTF-8");//設置編碼
            conn.setRequestProperty("connection", "keep-alive");
            conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
            conn.connect();

            if (file != null) {
                //當文件不爲空,把文件包裝並且上傳
                DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
                dos.writeBytes(PREFIX + BOUNDARY + LINE_END);
                dos.writeBytes("Content-Disposition: form-data; " + "name=\"inputName\";filename=\"" + file.getName() + "\"" + LINE_END);
                dos.writeBytes(LINE_END);

                FileInputStream is = new FileInputStream(file);
                byte[] bytes = new byte[1024];
                int len = -1;
                while ((len = is.read(bytes)) != -1) {
                    dos.write(bytes, 0, len);
                }
                is.close();
                dos.write(LINE_END.getBytes());

                byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();
                dos.write(end_data);
                dos.flush();
                /*
                 * 獲取響應碼  200=成功
                 * 當響應成功,獲取響應的流  
                 */
                int res = conn.getResponseCode();
                if (res == 200) {
                    InputStream input = conn.getInputStream();
                    StringBuilder sbs = new StringBuilder();
                    int ss;
                    while ((ss = input.read()) != -1) {
                        sbs.append((char) ss);
                    }
                    result = sbs.toString();
                    String filepathnow=file.getPath();
                    String newfilename=filepathnow.substring(0,filepathnow.lastIndexOf("."))+"-已上傳.log";
                    file.renameTo(new File(newfilename) );
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

C#服務端代碼

public static string Upload_File()
{
    try
    {
        HttpFileCollection file_list = HttpContext.Current.Request.Files;
        if (file_list != null && file_list.Count > 0)
        {
            string str = string.Empty;
            for (int i = 0; i < file_list.Count; i++)
            {
                HttpPostedFile file = file_list[i];
                string type = file.ContentType;//獲取文件類型
                string FileName = file.FileName;
                string guid = "";
                if (FileName != null && FileName != "")
                {
                    string FileType = FileName.Substring(FileName.LastIndexOf(".") + 1);//得到文件的後綴名
                    guid = DateTime.Now.ToString("yyyyMMddhhmmss") + FileName;//得到重命名的文件名
                                                                                //定義文件存放的目標路徑
                    string targetDir = HttpContext.Current.Server.MapPath("~/UpLoad/" + DateTime.Now.ToString("yyyy-MM-dd") + "/file");
                    //創建目標路徑
                    Directory.CreateDirectory(targetDir);
                    string path = Path.Combine(targetDir, Path.GetFileName(guid));
                    file.SaveAs(path);
                    str = str + "/UpLoad/" + DateTime.Now.ToString("yyyy-MM-dd") + "/file/" + guid;
                }
            }
            return "上傳成功," + str;
        }
        else
            return "文件不存在";
    }
    catch (Exception ex)
    {
        return "上傳失敗," + ex.Message;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章