1.朋友的一個需求,讓我給他實現,需求是這樣的,需要用ASP.net寫一個頁面負責處理客戶端上傳的文件,並根據傳遞的參數把文件保存到相應的目錄。客戶端是手機應用程序,因為沒學過Android,所以我只是寫了一個Java的Demo用來上傳文件。
服務端:
public partial class _Default : System.Web.UI.Page { private string id = ""; private string userName = ""; private string type = ""; private string fileName = ""; //文件長度 private long contentLength = 0; private static readonly string filePath = ConfigurationManager.AppSettings["filePath"]; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { id = Request["id"]; userName = Request["user"]; type = Request["type"]; fileName = Request.Headers["FileName"]; writeFile(); } } /// <summary> /// 上傳文件 /// </summary> private void writeFile() { try { Stream stream = Request.InputStream; contentLength = stream.Length; string currentFilePath = filePath + userName; if (!Directory.Exists(currentFilePath)) { Directory.CreateDirectory(currentFilePath); } FileStream fileStream = File.Create(currentFilePath + @"\" + fileName); //每次讀取的1024個字節 byte[] bytes = new byte[1024]; int numReadByte = 0; while ((numReadByte = stream.Read(bytes, 0, 1024)) != 0) { fileStream.Write(bytes, 0,numReadByte); } //關閉流 stream.Close(); fileStream.Close(); }
Java文件上傳客戶端示例,(幾年沒搞java有點生疏了):
import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.net.HttpURLConnection; import java.net.URL; /** * * 只是寫的一個示例,filePath,和FileName根據需要進行調整。 */ public class MyTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str="http://localhost:2906/Default.aspx?id=1&user=2&type=3"; String filePath="D:\\Wildlife.wmv"; String fileName="Wildlife.wmv"; try { URL url=new URL(str); HttpURLConnection connection=(HttpURLConnection)url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.addRequestProperty("FileName", fileName); connection.setRequestProperty("content-type", "text/html"); BufferedOutputStream out=new BufferedOutputStream(connection.getOutputStream()); //讀取文件上傳到服務器 File file=new File(filePath); FileInputStream fileInputStream=new FileInputStream(file); byte[]bytes=new byte[1024];
int numReadByte=0; while((numReadByte=fileInputStream.read(bytes,0,1024))>0) { out.write(bytes, 0, numReadByte); }
out.flush(); fileInputStream.close(); //讀取URLConnection的響應 DataInputStream in=new DataInputStream(connection.getInputStream()); } catch (Exception e) { e.printStackTrace(); } } }