gpt4 book ai didi

c# - 如何克隆 HttpPostedFile

转载 作者:行者123 更新时间:2023-12-02 05:42:57 24 4
gpt4 key购买 nike

我有一个应用程序,允许用户上传文件,该文件在保存之前会使用赛门铁克防护引擎进行扫描。我遇到的问题是,使用保护引擎扫描文件后,它们的字节数为 0。我正在尝试找到解决这个问题的方法。

我已经尝试过这里提到的克隆解决方案:Deep cloning objects ,但我上传的文件并不都是可序列化的。我还尝试在扫描引擎类中将流重置为 0,然后再将其传回保存。

我已与赛门铁克联系,他们说为此应用程序编写的自定义连接类看起来正确,并且保护引擎没有抛出错误。

我愿意接受解决此问题的任何方案。

以下是上传文件的代码:

private void UploadFiles()
{
System.Web.HttpPostedFile objFile;
string strFilename = string.Empty;
if (FileUpload1.HasFile)
{

objFile = FileUpload1.PostedFile;
strFilename = FileUpload1.FileName;


if (GetUploadedFilesCount() < 8)
{
if (IsDuplicateFileName(Path.GetFileName(objFile.FileName)) == false)
{
if (ValidateUploadedFiles(FileUpload1.PostedFile) == true)
{
//stores full path of folder
string strFileLocation = CreateFolder();

//Just to know the uploading folder
mTransactionInfo.FileLocation = strFileLocation.Split('\\').Last();
if (ScanUploadedFile(objFile) == true)
{
SaveFile(objFile, strFileLocation);
}
else
{
lblErrorMessage.Visible = true;
if (mFileStatus != null)
{ lblErrorMessage.Text = mFileStatus.ToString(); }

如果有人需要,我可以提供连接类代码,但它相当大。

最佳答案

您可以在将文件流传递到扫描引擎之前获取文件流的副本。

byte[] fileData = null;
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
{
fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength);
}

// pass the scanning engine
StreamScanRequest scan = requestManagerObj.CreateStreamScanRequest(Policy.DEFAULT);
//...

更新要复制流,您可以执行以下操作:

MemoryStream ms = new MemoryStream();
file.InputStream.CopyTo(ms);
file.InputStream.Position = ms.Position = 0;

关于c# - 如何克隆 HttpPostedFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28091315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com