<p>多亏了>;阿拉希扬穆罕默德酒店</p>
<p>我的问题是以字符串而不是字节数组的形式从Unity发送文件。
我已将python代码更改为Flask server,以便可以轻松地从post请求中获取文件,最后我得到了以下代码:</p>
<p><strong>这是我在Unity中的代码:</strong></p>
<pre><code>IEnumerator StartUploadCoroutine()
{
// Show a load file dialog and wait for a response from user
yield return FileBrowser.WaitForLoadDialog(false, null, "Load File", "Load");
isOpen = false;
// Upload File to movie server
if (FileBrowser.Success)
{
StartCoroutine(UploadCoroutine(FileBrowser.Result)); // upload file to server;
}
}
/* Upload the chosen video file to the movie server */
IEnumerator UploadCoroutine(string filePath)
{
WWWForm form = new WWWForm();
form.AddBinaryData("vidFile", File.ReadAllBytes(filePath));
UnityWebRequest www = UnityWebRequest.Post(videoPlayerManager.GetServerUrl(), form);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
</code></pre>
<p><strong>这是我的Python代码:</strong></p>
<pre><code>import os
from flask import Flask, request, send_from_directory
from gevent.pywsgi import WSGIServer
IP = "127.0.0.1"
PORT = 9999
# set the project root directory as the static folder
app = Flask(__name__)
@app.route('/', methods=['POST'])
def DownloadFile():
# request.form to get form parameter
vidFile = request.files["vidFile"].read()
outF = open("myOutFile.mp4", "wb")
outF.write(vidFile)
return ''
if __name__ == "__main__":
http_server = WSGIServer((IP, PORT), app)
http_server.serve_forever()
</code></pre>