回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我将图像和其他参数从python发送到web服务(.net)端点。当我把它转换成字节然后写入磁盘时,创建的图像无法显示。。。错误是“图像无法显示,因为它包含错误”。这是我用python编写的代码</p>
<pre><code>def upload_form():
header = {'Content-Type':'application/json'}
params = {'imagefile':bx64, 'sacid':'3', 'astid':'188', 'docName':'abc4', 'docExtn':'png'}
url='http://localhost:47176/snapshot.svc/DoUpload'
selector =''
try:
_data = dumps(params)
req = request.Request(url)
connection = http.client.HTTPConnection(req.host)
connection.request ('POST', req.selector, _data, header)
response = connection.getresponse()
print('response = %s', response.read())
except Exception as e:
print('Error...', e)
bx64 = get_b64string('some png file name')
def get_b64string(file):
ENCODING = 'utf-8'
with open(file, 'rb') as open_file:
return b64encode(open_file.read()).decode(ENCODING)
</code></pre>
<p>在服务器端,端点代码是</p>
<pre><code> public string DoUpload(string imagefile, string sacid, string astid, string docName, string docExtn)
{
string m_fileName = string.Format("{0}.{1}", docName, docExtn.Replace(".", ""));
string m_host = string.Format("{0}/{1}", FTPUrl, sacid.ToString());
try
{
byte[] imgbinaryarray = Encoding.UTF8.GetBytes(imagefile);
if (UploadToFtp(imgbinaryarray, FTPUrl, Convert.ToInt32(sacid), Convert.ToInt32(astid), m_fileName)) return "OK";
}
catch (Exception ex)
{
//Log and return error
return ex.Message;
}
return "File could not be processed, contact application support!";
}
</code></pre>
<p>编辑时间:
我修改了代码以使用python中的'requests'库,并相应地修改了端点</p>
<p>终点:</p>
<pre><code> [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
public string DoFileUpload(Stream fileContent)
{
string docName = "abc-"+DateTime.Now.Ticks.ToString();
string m_fileName = string.Format("{0}.jpg",docName);
string filePath = string.Format("C:\\Temp\\Upload\\{0}", m_fileName);
try
{
using (var fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
fileContent.CopyTo(fs);
}
return "OK";
}
catch (Exception ex)
{
return ex.Message;
}
}
</code></pre>
<p>Python代码:</p>
<pre><code> def upload_form3(fileToUpload):
try:
url = 'http://localhost:47176/snapshot.svc/DoFileUpload'
files = {'fileContent':open(fileToUpload,'rb')}
r = requests.post(url, files=files)
print(r.text)
except Exception as e:
print('upload_form3. Error...', e)
</code></pre>
<p>创建的文件仍然显示相同的错误,即无法打开包含错误的文件</p>