using UnityEngine;
using System.Collections;
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
public class NewBehaviourScript : MonoBehaviour {
string url = "http://219.85.250.149:8080/UploadFile"; // 伺服器上傳網址
string filePath = "/Users/Loli/Desktop/Easy Download/23-121026161100.jpg"; // 檔案路徑
void Start () {
UploadFilesToRemoteUrl (url, filePath);
}
private string UploadFilesToRemoteUrl(string url, string file)
{
// Create a boundry
string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");
// Create the web request
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary;
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;
httpWebRequest.AllowWriteStreamBuffering = false;
httpWebRequest.Credentials =
System.Net.CredentialCache.DefaultCredentials;
// Get the boundry in bytes
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
// Get the header for the file upload
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\";filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";
// Add the filename to the header
string header = string.Format(headerTemplate, "file", file);
//convert the header to a byte array
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
// Add all of the content up.
httpWebRequest.ContentLength = new FileInfo(file).Length + headerbytes.Length + (boundarybytes.Length * 2) + 2;
// Get the output stream
Stream requestStream = httpWebRequest.GetRequestStream();
// Write out the starting boundry
requestStream.Write(boundarybytes, 0, boundarybytes.Length);
// Write the header including the filename.
requestStream.Write(headerbytes, 0, headerbytes.Length);
// Open up a filestream.
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
// Use 4096 for the buffer
byte[] buffer = new byte[4096];
int bytesRead = 0;
// Loop through whole file uploading parts in a stream.
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
requestStream.Flush();
}
boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
// Write out the trailing boundry
requestStream.Write(boundarybytes, 0, boundarybytes.Length);
// Close the request and file stream
requestStream.Close();
fileStream.Close();
WebResponse webResponse = httpWebRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);
string responseString = responseReader.ReadToEnd();
// Close response object.
webResponse.Close();
return responseString;
}
}
公告版位
需要找什麼嗎? 左邊分類或許可以幫助你...
- Dec 05 Fri 2014 19:25
Unity 入門教學:使用 httpWebRequest 上傳檔案
全站熱搜
留言列表
發表留言