我创建了一个有两个模块的网站,
它们托管在不同的域上。现在当用户打开其域名时,假设其 abc.com 并且可以注册他们的公司并从那里上传照片,上传的照片将进入 Company_Logo FOLDER 。 现在假设ADMIN的域名为 xyz.com 。现在我希望ADMIN打开它的xyz.com并且可以看到从abc.com上传的照片现在我想要来自xyz.com的ADMIN手段可以将上传的照片更改为在Company_Logo FOLDER中的abc.com。
简短的照片在用户端上传,位于abc.com上,并从xyz.com上的ADMIN端取代,所以我该怎么做
答案 0 :(得分:1)
您有两种选择。
如果您的两个站点都托管在同一台计算机或共享托管环境中,那么您的站点可能会访问其他目录。在这种情况下,您可以轻松地将图像放在所需的文件夹中。
现在是第二种情况,其中一个网站无法访问其他网站的文件夹, - 它相当复杂。您必须创建一个代理,管理站点将接受该图像,然后它将把它放在主站点文件夹中。我不建议这样做。
答案 1 :(得分:1)
因此,您有两个不同的站点,托管在不同的域甚至不同的服务器上,并且您希望站点A在上载某个文件时通知站点B.然后,您希望能够从站点B更改站点A上的该文件。
在我看来,你需要在网站A上创建某种API,它允许来自网站B的用户(管理员)检查最近上传的文件,并让他们覆盖它。
答案 2 :(得分:1)
好的,这可以完成,但您需要使用HttpHandler
。你可以找到一个很好的例子here,但我会列出重要的部分。我不能在这里为你写完整个处理程序。
首先,让我们在Web项目中构建一个类,并将其命名为ImageHandler
...
public class ImageHandler : IHttpHandler
{
}
...接下来让我们实现界面...
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
// find out what we're trying to do first
string method = context.Request.HttpMethod;
switch (method)
{
case "GET":
// read the query string for the document name or ID
// read the file in from the shared folder
// write those bytes to the response, ensuring to set the Reponse.ContentType
// and also remember to issue Reponse.Clear()
break;
case "PUT":
// read the Headers from the Request to get the byte[] of the file to CREATE
// write those bytes to disk
// construct a 200 response
break;
case "POST":
// read the Headers from the Request to get the byte[] of the file to UPDATE
// write those bytes to disk
// construct a 200 response
break;
case "DELETE":
// read the Headers from the Request to get the byte[] of the file to DELETE
// write those bytes to disk
// construct a 200 response
break;
}
}
...最后我们需要在web.config
...
<configuration>
<system.web>
<httpHandlers>
<!-- remember that you need to replace the {YourNamespace} with your fully qualified -->
<!-- namespace and you need to replace {YourAssemblyName} with your assembly name -->
<!-- EXCLUDING the .dll -->
<add verb="*" path="*/images/*" type="{YourNamespace}.ImageHandler, {YourAssemblyName}" />
</httpHandlers>
</system.web>
</configuration>
最后 ,你还想做的事情就是传递某种会话密钥,当你进入处理程序时可以验证它,否则这个向所有人开放。如果你不需要PUT
,POST
和DELETE
动词,那就无所谓了。
从技术上讲,如果你不关心每个人都可以访问GET
,你就不需要检查GET
上的会话密钥,但你必须检查其他人。
答案 3 :(得分:0)
您可以分两步完成:
1)使用标准文件上传机制
将图像上传到服务器2)在原始上传后,使用HttpWebRequest类将图像上传到服务器端的不同服务器。 请参阅此文章:Upload files with HTTPWebrequest (multipart/form-data)