2011-12-30 75 views
0

我使用vb.net为什么是图像图标空白/白当fileupload.saveas

我试图做一个文件上传,我要像保存到图像文件夹,但是,图像不知道出现在我表明

如果我点击“显示所有文件”,则图像出现在目录中,但图像图标是空白的或白色的像下面显示的图像

,所以我点击图片,然后点击在“包括在项目中”,但是,它不应该是我每次上传图像的情况下,我需要重做一次

因此,我应该如何让不出现白色图标,并始终出现在上传文件夹时,我上传图像,而不是手动点击图像包括在?

这是我的代码

Protected Sub uploadImage() 
    Dim filename As String = FileUploadImg.FileName 
    Dim fileType As String = filename.Substring(filename.Length - 4).ToLower() 
    If (fileType = ".gif") Or (fileType = ".jpg") Or (fileType = ".png") Then 
     FileUploadImg.SaveAs("C:\Users\Jane\Desktop\project\FileUpload\FileUpload\WebRole1\images\" & txtboxName.Text & "_" & FileUploadImg.FileName) 
    Else 
     MsgBox("failed") 

    End If 
End Sub 

Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click 
     uploadImage() 

     'End If 
    End Sub 

这是怎么看起来像

blank icon

回答

0

像你必须指定一个目录,您上传的内容将被放置。例如,如果我在C:\,Website1中创建一个新项目,则该目录将为C:\ Website1。然后,我会创建一个目录下来存储上传:C:\ Website1 \ uploads,并确保设置为读取/写入IIS帐户的权限。然后我会这样做:

string uploadPath = MapPath("pictures\\"); 
this.fileUpload1.SaveAs(uploadPath + this.fileUpload1.FileName); 

一旦文件在上传目录中,我可以将其移动到任何我喜欢的位置。

+0

是不是跟我所做的一样?你是什​​么意思的权限读取/写入IIS帐户......但如何? – devilking 2011-12-30 07:31:02

1

您必须将发布的文件保存到Web服务器上的持久存储中,并将文件映射到某个URL以便可以从互联网访问它们。

在Azure环境中,本地磁盘(如c:)未被持久化(设想多个Web角色 - 您如何从其他实例提供相同的图像)。

解决方案是Azure Blob存储(您必须在您的Azure管理控制台中使用set-up)并将张贴的文件上载到Blob存储容器。

// Setup the connection to Windows Azure Storage 
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); 
var blobClient = storageAccount.CreateCloudBlobClient(); 

// Get and create the container 
var blobContainer = blobClient.GetContainerReference("public-images"); 
blobContainer.CreateIfNotExist(); 

    // Allow blob to be downloaded 
    containerPermissions = new BlobContainerPermissions(); 
    containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob; 
    blobContainer.SetPermissions(containerPermissions); 

// Get the target blob reference 
var blobAddressUri = String.Format("{0}{1}", fileName); //create random fileName here 
var blob = BlobContainer.GetBlobReference(blobAddressUri); 

// Set blob Content-Type 
blob.Properties.ContentType = FileUploadImg.PostedFile.ContentType ; 

// Upload to the blob storage account 
blob.UploadFromStream(FileUploadImg.FileContent); 

您的文件现在可在blob.Uri

+0

bt我还没有使用blob存储......我将它保存在webrole project images文件夹中 – devilking 2011-12-30 07:59:00

+0

如果你在Azure中,你必须使用blob存储 - 你只需花时间测试非azure兼容解决方案。无论如何要回答你的问题 - 使用Server.MapPath方法,而savig文件 - 用这种方法,你可以得到url可访问路径。 – Matej 2011-12-30 08:12:31

+0

我没有帐户,所以事情是我只是想上传到创建的项目下的文件夹,我的问题是每当我上传它不会显示文件夹中的图像,但是如果我点击“显示所有文件“它显示的图像,但图标是空的或白色的,所以有什么错?我如何改变它? – devilking 2011-12-30 12:54:29