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;
}
}