110,533
社区成员
发帖
与我相关
我的任务
分享
namespace file
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“Ifile”。
[ServiceContract]
public interface Ifile
{
[OperationContract]
void UpLoadFile(UpLoadFileMessage request);
}
[MessageContract]
public class UpLoadFileMessage
{
[MessageHeader]
public string FileName { get; set; }
[MessageBodyMember]
public FileStream FileData { get; set; }
}
}
public void UpLoadFile(UpLoadFileMessage request)
{
string UploadFolder = "D:\\";
string FileName = request.FileName;
Stream sourceStream = request.FileData;
FileStream targetStream = null;
if (!sourceStream.CanRead)
{
throw new Exception("数据流不可读!");
}
if (!Directory.Exists(UploadFolder))
{
Directory.CreateDirectory(UploadFolder);
}
string filePath = UploadFolder + FileName;
using (targetStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write))
{
const int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int count = 0;
while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
{
targetStream.Write(buffer, 0, count);
}
targetStream.Flush();
targetStream.Close();
sourceStream.Close();
}
}
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyBinding" transferMode="Streamed" messageEncoding="Mtom" maxBufferSize="524288000" maxReceivedMessageSize="524288000" sendTimeout="00:10:00"/>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<dataContractSerializer maxItemsInObjectGraph="524288000"/>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="file.file" behaviorConfiguration="MyBehavior">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="MyBinding" contract="file.Ifile"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
<system.web>
<compilation debug="true"/></system.web></configuration>
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog opd = new OpenFileDialog();
if(opd.ShowDialog()==DialogResult.OK)
{
textBox1.Text = opd.FileName;
}
}
private void button2_Click(object sender, EventArgs e)
{
string filepath = textBox1.Text;
string FileName = Path.GetFileName(filepath);
FileStream FileData = new FileStream(filepath, FileMode.Open, FileAccess.Read);
file.IfileClient client = new file.IfileClient();
try
{
client.UpLoadFileAsync(FileName, FileData);
MessageBox.Show("成功!");
}
catch
{
MessageBox.Show("错误!");
}