- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在设计一个基于 Web 的文件管理系统,可以概念化为 3 个不同的服务器:
所有 3 台服务器都将基于同一内部网络的 *nix。基于 Windows 的用户将使用 Web 界面为服务器 1 上的文件创建初始条目。该文件将从用户的本地驱动器“上传”到服务器 3(如果该文件当前不存在于服务器 3 上的任何位置)网络)或内部网络上的另一个网络驱动器。
我的问题与实现我想做的事情的最佳编程方法有关,即:
当用户从网络上传文件(通过网络表单选择源)时,文件作为网络间传输传输到服务器 3,而不是通过用户(我相信如果它作为标准 HTTP 表单上传发送会发生什么)。我知道我可以在每台机器上设置 FTP 服务器并尝试在不同位置之间传输 FXP 文件,但这比在服务器 1(将具有全局网络访问权限)上执行命令的 PHP 更可取,以这种方式执行跨网络传输吗?
第二个问题是,我们正在讨论的这些文件非常大,每个文件至少有 1 GB 或 2 GB,因此传输不会是即时的。我需要一些轮询传输状态的方法,并将其返回到 Web 界面,以便用户知道发生了什么。
或者,可以让此上传与用户的当前 View 异步运行,但我仍然需要一种方法来检查传输状态以确保它完成。
那么,如果使用 FXP 解决方案,如何实现轮询?如果从 shell 使用文件移动/复制命令,是否可以进行任何形式的轮询? PHP/JQuery 解决方案将是非常可接受的。
这个问题的最后一部分与 Windows 网络驱动器映射有关。用户可以映射一个驱动器(并从中选择一个文件),一个任意指定的映射驱动器。他们的 G:\可能与\server4\some\location\therein 有关,但大概通过 Web 表单提供给服务器的任何驱动器路径只会发送 G:\文件路径。 有没有办法确定映射网络驱动器的“真实路径”?
在处理文件时,任何解决方案都可用于将文件从服务器 3 暂存到服务器 2 - 重点是这些巨型文件不必先通过用户的本地计算机。
如果您有任何意见,请告诉我,如果不清楚,我会尽量使这个问题更加连贯。
最佳答案
据我所知(我可能是错的),没有标准的方法可以从浏览器确定映射驱动器的 UNC 路径。
做到这一点的唯一方法是在网页中进行某种控制。可能是 ActiveX 或闪存。我见过 ActiveX 这样做,但没有看到 flash。
过去,在设计需要知道用户映射驱动器的 UNC 路径的基于 Web 的系统时,我必须将驱动器转换为存储在服务器端的 UNC 路径。尽管知道哪个驱动器将映射到哪个 UNC 路径,但我确实很幸运。如果用户可以设置任意路径,那么这显然行不通。
好吧,因为我在拖延和逃避真正的工作,所以我考虑了一下。
首先我要说我绝不是 Linux 专家,我将要描述的系统只是在我脑海中浮现出来的,不是你想要的东西进入任何一种生产。但是,它可能会帮助您走上正确的道路。
因此,您有 3 台服务器,接口(interface)服务器(我假设是 LAMP 堆栈?)、登台服务器和文件存储服务器。您还将拥有客户端计算机和网络共享。出于此设计的目的,您的网络共享托管在您的文件存储可以从中获取 scp 的 nix 框上。
您将创建您的前端网站来跟踪和存储有关文件等的信息。这还将保存有关正在复制哪些文件、哪些文件在暂存中等的详细信息。
您还需要在文件存储服务器上运行某种服务。我将其称为文件复制服务。这将负责处理托管网络共享的服务器中的文件。
现在,您仍然无法确定用户文件实际所在的路径。如果您可以阻止用户映射他们自己的驱动器并强制他们使用一致的驱动器号,那么您可以将驱动器号转换为服务器上的 UNC 路径。如果你不能,那么我会让你弄清楚的。如果您在 Windows 域中,您可以使用组策略强制驱动器映射。
无论如何,系统的流程会像这样工作。
文件复制服务还可用于将文件从文件存储移动到登台服务器。
正如我所说的,经过深思熟虑。以上方法可行,但这在很大程度上取决于您的系统设置方式等。
话虽如此,但肯定有软件可以做到这一点。你看过了吗?
关于php - 使用带轮询的 PHP 进行网络间文件传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236575/
运行 PostgreSQL(7.4 和 8.x),我认为这是可行的,但现在我遇到了错误。 我可以单独运行查询,它工作得很好,但如果我使用 UNION 或 UNION ALL,它会抛出错误。 这个错误:
我试图为我的应用程序创建一个导航,使用抽屉导航我的 fragment 之一(HomeFragment)有一个 ViewPager,可容纳 3 个 fragment (Bundy Clock、Annou
以我目前正在开发的应用为例: - 它有一个包含多个项目的抽屉导航;现在有两个项目让我感兴趣,我将它们称为 X 和 Y。 X 和 Y 都在单击时显示包含 x 元素或 y 元素列表的 fragment 选
我有一个形状为 (370,275,210) 的 NumPy 数组,我想将其重新整形为 (275,210,370)。我将如何在 Python 中实现这一点? 370是波段数,275是行数,210是图像包
我们如何与被子 UIViewController 阻止的父 UIViewController(具有按钮)交互。显然,触摸事件不会通过子 Nib 。 (启用用户交互) 注意:我正在加载默认和自定义 NI
我是 Jpa 新手,我想执行过程 我的代码如下 private static final String PERSISTENCE_UNIT_NAME = "todos"; private static
与安装了 LAMP 的 GCE 相比,选择与 Google Cloud SQL 链接的 GCE 实例有哪些优势? 我确定 GCE 是可扩展的,但是安装在其上的 mysql 数据库的可扩展性如何? 使用
这个问题在这里已经有了答案: Value receiver vs. pointer receiver (3 个答案) 关闭 3 年前。 我刚接触 golang。只是想了解为 Calc 类型声明的两种
我不小心按了一个快捷键,一个非常漂亮的断线出现在日期上。 有点像 # 23 Jun 2010 -------------------- 有人知道有问题的快捷方式吗?? (我在 mac 上工作!) 在
我正在Scala中编写正则表达式 val regex = "^foo.*$".r 这很好,但是如果我想做 var x = "foo" val regex = s"""^$x.*$""".r 现在我们有
以下 XML 文档在技术上是否相同? James Dean 19 和: James Dean 19 最佳答案 这两个文档在语义上是相同的。在 X
我在对数据帧列表运行稳健的线性回归模型(使用 MASS 库中的 rlm)时遇到问题。 可重现的示例: var1 <- c(1:100) var2 <- var1*var1 df1 <- data.f
好的,我有一个自定义数字键盘,可以在标签(numberField)中将数字显示为 0.00,现在我需要它显示 $0.00。 NSString *digit = sender.currentTitle;
在基于文档的应用程序中,使用 XIB 文件,创建新窗口时其行为是: 根据最后一个事件的位置进行定位和调整大小 window 。 如果最后一个事件窗口仍然可见,则新窗口 窗口应该是级联的,这样它就不会直
我想使用参数进行查询,如下所示: SELECT * FROM MATABLE WHERE MT_ID IN (368134, 181956) 所以我考虑一下 SELECT * FROM MATABLE
我遇到一些性能问题。 我有一个大约有 200 万行的表。 CREATE TABLE [dbo].[M8]( [M8_ID] [int] IDENTITY(1,1) NOT NULL,
我在 jquery 中的按键功能遇到问题。我不知道为什么按键功能不起作用。我已经使用了正确的 key 代码。在我的函数中有 2 个代码,其中包含 2 个事件键,按一个键表示 (+) 代码 107 和(
我想显示音频波形,我得到了此代码,它需要.raw音频输入并显示音频波形,但是当我放入.3gp,.mp3音频时,我得到白噪声,有人可以帮助我如何使其按需与.3gp一起使用使用.3gp音频运行它。 Inp
我无法让 stristr 函数返回真值,我相信这是因为我的搜索中有一个 $ 字符。 当我这样做时: var_dump($nopricecart); 完整的 $nopricecart 值是 $0 ,我得
如果我有这样的循环: for(int i=0;i O(n) 次。所以do some执行了O(n)次。如果做某事是线性时间,那么代码片段的复杂度是O(n^2)。 关于algorithm - 带 If 语
我是一名优秀的程序员,十分优秀!