以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  文件已经打开,无法上传  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193152)

--  作者:newsun2k
--  发布时间:2024/8/22 8:53:00
--  文件已经打开,无法上传
我用ftp上传文件,有时会弹出这个提示【文件已经打开,无法上传】,这个不是我提示的。
我不想弹出提示,忽略这个错误,或者捕捉这个提示也行。
有办法吗?

--  作者:有点蓝
--  发布时间:2024/8/22 9:04:00
--  
参考:http://www.foxtable.com/webhelp/topics/2070.htm
--  作者:newsun2k
--  发布时间:2024/8/22 9:09:00
--  
我用了try,还是不能捕捉这个错误。
Try
    If ftp1.Upload(strLocalFile, strRemoteFile) = True Then  
    Else
        ftp1.Close
        Return False
    End If
Catch ex As Exception
    ftp1.Close
    Return False
End Try
ftp1.Close
Return True

--  作者:有点蓝
--  发布时间:2024/8/22 9:25:00
--  
那就没有办法了。尽量保证文件没有打开使用。如果是execl、word之类的,考虑把所有execl、word进程杀掉在上传,比如

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")
For Each p As System.Diagnostics.Process In ps
    p.kill
Next

--  作者:newsun2k
--  发布时间:2024/8/22 9:54:00
--  
我的文件是从邮件中下载下来的附件
                                    Dim decodedDataStream As io.Stream = byteObj.GetDataStream()
                                    Using fs As New io.FileStream(strLocalFile, io.FileMode.Create)
                                        LumiSoft.Net.Net_Utils.StreamCopy(decodedDataStream, fs, 4000)
                                    End Using
文件名是已知的(strLocalFile),上面这个杀进程的方法,能不能改成判断文件名,有的话杀掉?
怎么改,帮忙指导一下。谢谢。

--  作者:newsun2k
--  发布时间:2024/8/22 9:56:00
--  
我是半夜自动收邮件,没有主动去打开这个文件,偶然性地报错,结果收邮件就进行不下去了。
--  作者:有点蓝
--  发布时间:2024/8/22 10:15:00
--  
没有办法判断文件名。建议看LumiSoft这个组件有没有释放内存的用法,不然强制杀掉可能会导致文件保存不完整